2017-10-13 20 views
2

条件式を使用してフィールドに注釈を付したいと思います。しかし、Django ORMはAvg( 'rating')と5を比較することはできません。クエリ前に平均評価を計算できますが、それが適切かつ効率的な方法かどうかはわかりません。Django ORM:条件式の平均結果の計算

queryset = (
    Item.objects.filter(
     status='Live' 
    ).annotate(
     group=Case(When(Avg('rating')=5, then=0)) 
    ) 
) 

答えて

1

最初に平均に注釈を付けて、条件式に入りましたか?パフォーマンスの意味合いがわからない...メモリ:

Item.objects.filter(
    status='Live' 
).annotate(average_rating=Avg('rating').annotate(
    group=Case(When(average_rating=5, then=0)) 
)