我正在尝试做一些非常简单和琐碎的事情,但没有运气。
我正在使用django-rating来评估我网站上的特定对象。 在我想评价的模型上,我有一个字段:
rating = RatingField(range=5)
现在,我想要的是过滤所有速率为2和aobve的对象。
例如,如果评级为IntegerField,我只需要这样做:
objects.filter( rating__gte = 2)
我怎么能用django-rating做同样的事?
答案 0 :(得分:1)
阅读django-rate documentation我发现这个技巧按比率排序:
# In this example, ``rating`` is the attribute name for your ``RatingField``
qs = qs.extra(select={
'rating': '((100/%s*rating_score/(rating_votes+%s))+100)/2'
% (MyModel.rating.range, MyModel.rating.weight)
})
qs = qs.order_by('-rating')
也许您可以修改此代码示例并使用extra where来获取结果:
qs = qs.extra(where=[
'((100/%s*rating_score/(rating_votes+%s))+100)/2 >= 2 ' %
(MyModel.rating.range, MyModel.rating.weight) ,
])