Макс функция Джанго модель - PullRequest
2 голосов
/ 02 декабря 2011

У меня следующие отношения:

class Question(models.Model):
  content = models.CharField(max_length=128)

class Answer(models.Model):
  content = models.CharField(max_length=128)
  question = models.ForeignKey(Question)
  num_vote = models.IntegerField()

Я хочу получить ответы, которые имеют максимальное количество голосов. Я попробовал это утверждение, но оно не правильно.

answers = Answer.objects.filter(question__exact=1).annotate(Max('num_vote'))

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Какое-то заранее определенное количество ответов?Вам нужно, например, 5 ответов с высокими оценками, используйте

answers = Answer.objects.filter(question=somequestion).order_by('-num_vote')[:5]

Если вам нужны все ответы с max num_vote, вам нужно 2 запроса.

max_score = Answer.objects.filter(question=somequestion).aggregate(score=Max('num_vote'))
answers = Answer.objects.filter(question=somequestion, num_vote=max_score['score'])
0 голосов
/ 02 декабря 2011

Во-первых, если вы хотите получить все ответы для определенного Question, то вам нужно использовать экземпляр Question:

question = Question.objects.get(...)
answers = Answer.objects.filter(question=question).annotate(Max('num_vote'))

Во-вторых, приведенное выше может быть причинойваши проблемы?

...