【发布时间】:2011-09-03 21:01:53
【问题描述】:
我正在制作一个与您现在所在页面类似的 QA 网站。我试图按他们的分数对答案进行排序,但是没有投票的答案的分数设置为 None 而不是 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()的默认值的公开Django ticket。
标签: django django-models django-orm