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模型。 所以我们希望每个ThingVote集合的score字段的总和或平均值。 (我认为它的评分字段我们想注释https://github.com/Kronuz/django-ratings/blob/master/djangoratings/models.py#L15但我不使用这个插件,所以做一点研究,如果这不是你需要的)

链接地址: http://www.djcxy.com/p/38651.html

上一篇: Django Filter Queryset by Highest Rating

下一篇: Django filtering a queryset