1

私はかなり単純で些細なことをしようとしていますが、運がありません。

サイト上の特定のオブジェクトを評価するために django-rating を使用しています。私が評価したかった私のモデルには、フィールドがあります:

rating = RatingField(range=5)

今、私が望むのは、たとえばレートが2でaobveのすべてのオブジェクトをフィルタリングすることだけです。

たとえば、評価が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 に答える