2011-12-02 106 views
2

我有關係如下:最大功能的Django模型

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')) 

回答

1

某些預定義數量的答案?您需要例如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

太謝謝你了。 –

0

首先,如果你想獲得所有的答案特定Question,那麼你必須使用Question的實例:

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

其次,上述可能是你的問題的原因?

+0

感謝Joachim Pileborg。但我想檢索具有最大num_vote的答案。例如。有3個答案。答案1有3個num_vote。答案2有1個num_vote,答案3有3個num_vote。所以,結果是