Django按最高评分筛选查询集
我有一个允许评估其对象的模型,我希望能够按最高评分进行过滤,这是一个可以是正整数或负整数的数字范围:
class Thing(models.Model):
user = models.ForeignKey(User)
created_on = models.DateTimeField(auto_now_add=True)
rating = VotingField(can_change_vote=True)
....
VotingField
来自django评级分支。
我如何过滤这个查询集以将所有Thing
对象中的最高数量rating
order_by
? 感谢您的想法!
我不确定您是想要最高的平均金额还是最高金额,因此您可能需要更改注释
from django.db.models import Sum, Avg
Thing.objects.annotate(avg_rating=Avg('rating__score')).order_by('-avg_rating')
Thing.objects.annotate(sum_rating=Sum('rating__score')).order_by('-sum_rating')
请参阅https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate
它看起来像你打电话给你的VotingField rating
,看起来像它本质上是一个有很多的Vote
模型。 所以我们希望每个Thing
的Vote
集合的score
字段的总和或平均值。 (我认为它的评分字段我们想注释https://github.com/Kronuz/django-ratings/blob/master/djangoratings/models.py#L15但我不使用这个插件,所以做一点研究,如果这不是你需要的)