2011-12-02 110 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。所以,结果是