代码之家  ›  专栏  ›  技术社区  ›  zerohedge

Django:基于带条件注释的注释

  •  0
  • zerohedge  · 技术社区  · 6 年前

    我在我的查询集中的注释链的末尾执行此操作:

    .annotate(diff=F("total_views")/F("previous_views")
    

    问题是两者都是 total_views previous_views 是注释本身。这是有效的,除非 F("previous_views") 等于0。然后我得到零误差除法。所有尝试使用 Case / When 失败了。

    我在找一种计算方法 diff 作为分数,除非 以前的视图 0 ,在这种情况下,diff应该是 None .

    1 回复  |  直到 6 年前
        1
  •  2
  •   zerohedge    6 年前

    When

    .annotate(
                    diff=Case(
                        When(previous_views__gt=0, then= F("total_views") - F("previous_views"))
                    , default=None, output_field=FloatField())
                )