1

我正在尝试做一些非常简单和微不足道的事情,但没有运气。

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

rating = RatingField(range=5)

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

例如,如果 rating 是 IntegerField,我只需要这样做:

objects.filter( rating__gte = 2)

我怎样才能使用 django-rating 做同样的事情?

4

1 回答 1

1

阅读django-rate 文档我发现了这个按速率排序的技巧:

# 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')

也许您可以修改此代码示例并使用额外的 where来获取结果:

qs = qs.extra(where=[
         '((100/%s*rating_score/(rating_votes+%s))+100)/2 >= 2 ' % 
          (MyModel.rating.range, MyModel.rating.weight)  ,
                    ])
于 2012-07-19T19:27:29.617 回答