【问题标题】:Django ORM: Calculation of average result in conditional expression methodsDjango ORM:计算条件表达式方法中的平均结果
【发布时间】:2018-03-25 14:37:22
【问题描述】:

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

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

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2016-05-28
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多