django中的django-rating过滤

时间:2012-07-19 16:35:16

标签: django

我正在尝试做一些非常简单和琐碎的事情,但没有运气。

我正在使用django-rating来评估我网站上的特定对象。 在我想评价的模型上,我有一个字段:

rating = RatingField(range=5)

现在,我想要的是过滤所有速率为2和aobve的对象。

例如,如果评级为IntegerField,我只需要这样做:

objects.filter( rating__gte = 2)

我怎么能用django-rating做同样的事?

1 个答案:

答案 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)  ,
                    ])