calcular cantidad de votos para respuestas en un query



  Solución Elegida Por El Autor

Publicado 18 noviembre 2014 - 02:13

Has probado cambiar las opciones para los votos por numeros, lo hara mucho mas sencillo:

VOTE_CHOICES = ( 
(1, 'Up'),
(-1, 'Down'),
)

   AUTOR PREGUNTA

Publicado 17 noviembre 2014 - 03:46

Estoy escribiendo una aplicacion en django que sea algo asi como un foro con preguntas, respuestas y votos pero los votos van desde votos buenos y votos malos, entonces lo que me gustaria saber es como puedo hacer para consultar las preguntas y anotar cada pregunta con su puntaje, lo cual seria cuantos votos a favor menos los votos en contra que tenga, les dejo el codigo de lo que estoy construyendo:


class Question(models.Model):
pass

class Answer(models.Model):
pass
VOTE_CHOICES = ( 
('U', 'Positivo'),
('D', 'Negativo'),
) 

class Vote(models.Model):
user = models.ForeignKey(User)
answer = models.ForeignKey(Answer)
type = models.CharField(max_length=1, choices=VOTE_CHOICES, db_index=True)
class Meta: unique_together = (("usuario", "answer"),)



¿Tienes la misma pregunta? Yo también

 

Publicado 18 noviembre 2014 - 02:13

Has probado cambiar las opciones para los votos por numeros, lo hara mucho mas sencillo:

VOTE_CHOICES = ( 
(1, 'Up'),
(-1, 'Down'),
)

 

Publicado 18 noviembre 2014 - 02:18

Es como dice Joel, ahora solo necesitas aplicar este codigo:

Vote.objects.filter(answer__question=q).aggregate(Sum('type'))
Vote.objects.values('answer__question_id').annotate(score=Sum('type')).order_by()