Django ORM:计算条件表达式方法的平均结果

时间:2017-10-13 12:43:26

标签: django django-models django-orm

我想通过使用条件表达式来注释字段。但是,Django ORM不允许比较平均值('评分')和5.我可以在查询之前计算平均评分,但我不知道它是否合适有效的方式。

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

1 个答案:

答案 0 :(得分:1)

您是否尝试首先注释平均值,然后选择条件表达式?不确定性能影响......记忆:

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