Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
DRF cambia los valores de nombre de campo de los modelos django con claves externas

Seguí la sugerencia de esta pregunta Pero necesito nombrar un campo de query_set hasta la fecha archivado de otro objeto

mis modelos son

 class Choice(models.Model): question = models.ForeignKey(Question, related_name='choice', on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text class ChoiceWithTime(models.Model): choiceTime = models.ForeignKey(Choice,related_name='choiceTime', on_delete=models.CASCADE) choice_date=models.DateField()

Mi vista

 class QuestionChoicesViewSet(viewsets.ModelViewSet): queryset = Choice.objects.all() serializer_class = ChoiceDateSerializer def get_queryset(self): return Choice.objects.values('choiceTime__choice_date','choice_text').annotate( total_votes=Count('choiceTime__choice_date'), )

Necesito contar el número de envíos en fechas particulares

No sé cómo nombrar choiceTime__choice_date que el serializador reconoce el campo en el conjunto de consultas

 class ChoiceDateSerializer(serializers.ModelSerializer): choiceTime__choice_date = serializers.DateTimeField() total_votes = serializers.IntegerField() class Meta: model = Choice fields = ('id', 'choice_text','total_votes','choiceTime__choice_date')

Recibo

 { "choice_text": "ant tower", "total_votes": 3, "choiceTime__choice_date": "2017-04-20" }

pero quiero recibir

 { "choice_text": "ant tower", "total_votes": 3, "choice_date": "2017-04-20" }

Intenté diferentes opciones sin éxito. Definitivamente me estoy perdiendo el punto. Para mis propósitos, funciona, pero quiero tener una API bien escrita.

¿2 opción cambiar el modelo de envío de tiempo?

 class ChoiceWithTime(models.Model): choiceTime = models.ForeignKey(Choice,related_name='choiceTime', on_delete=models.CASCADE) choice_date=models.DateField() coutner = models.IntegerField(default=0)

¿Se considera que la opción 2 es un mejor enfoque para mi problema particular? ¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Está recibiendo un objeto json, al que agrega su valor clave.

 for vote_detail in data: if vote_detail.choiceTime__choice_date: vote_detail.choice_date=vote_detail.choiceTime__choice_date

luego serialice y guarde, una solución rápida.

También puede agregar a su modelo el nombre que desea llamarlo. Eso está más cerca del backend y tal vez valga la pena profundizar en él.

over 4 years ago · Santiago Trujillo Relatório

0

from django.db.models import Count,F

Si alguien encuentra este problema y esta es la respuesta más fácil que se me ocurrió. Como se sugirió antes de pasar al valor de cambio del serializador usando las funciones del paquete modelo

 class QuestionChoicesViewSet(viewsets.ModelViewSet): queryset = Choice.objects.all() serializer_class = ChoiceDateSerializer def get_queryset(self): return Choice.objects.all().annotate(choice_date=F('choiceTime__choice_date')).values('choice_date','choice_text').annotate( total_votes=Count('choiceTime__choice_date'), )
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda