Я делаю сайт контроля качества, похожий на страницу, на которой вы сейчас находитесь. Я пытаюсь упорядочить ответы по их баллам, но для ответов, за которые не было голосов, оценка устанавливается на «Нет», а не на 0. Это приводит к тому, что ответы без голосов находятся внизу страницы под ответами с отрицательным рейтингом. Как я могу сделать аннотированную оценку равной нулю, если за ответ нет голосов?
Вот моя модель:
from django.contrib.auth.models import User
Answer(models.Model):
//some fields here
pass
VOTE_CHOICES = ((-1, Down), (1, Up))
Vote(models.Model):
user = models.ForeignKey(User)
answer = models.ForeignKey(Answer)
type = models.IntegerField(choices = VOTE_CHOICES)
class Meta:
unique_together = (user, answer)
И вот мой запрос:
answers = Answer.objects.filter(<something here>)
.annotate(score=Sum('vote__type'))
.order_by('-score')
редактировать: И чтобы быть ясным, я хотел бы сделать это в запросе. Я знаю, что могу превратить его в список, а затем отсортировать в своем коде Python, но я бы хотел избежать этого, если это возможно.
Sum()
. - person Gary   schedule 08.02.2012