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

问题描述:

我想通过使用条件表达式来注释一个字段。但是,Django ORM不允许比较Avg('rating')和5.我可以在查询之前计算平均评分,但我不知道它是否是一种正确和有效的方式。Django ORM:计算条件表达式方法中的平均结果

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

您是否尝试首先对平均值进行注释,然后进行条件表达式?不确定性能影响......内存:

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