Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

125
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!