Django:基于带条件的注释进行注释
Django: Annotate based on annotations with conditional
我在我的查询集注释链的末尾执行此操作:
.annotate(diff=F("total_views")/F("previous_views")
问题是 total_views
和 previous_views
本身都是注释。这是有效的,除非 F("previous_views")
等于 0。然后我得到除以零的错误。所有使用 Case
/When
的尝试都失败了。
我正在寻找一种方法来计算 diff
作为分数,除非 previous_views
是 0
,在这种情况下 diff 应该是 None
.
显然,可以将注释用作 When
子句中的常规字段:
.annotate(
diff=Case(
When(previous_views__gt=0, then= F("total_views") - F("previous_views"))
, default=None, output_field=FloatField())
)
我在我的查询集注释链的末尾执行此操作:
.annotate(diff=F("total_views")/F("previous_views")
问题是 total_views
和 previous_views
本身都是注释。这是有效的,除非 F("previous_views")
等于 0。然后我得到除以零的错误。所有使用 Case
/When
的尝试都失败了。
我正在寻找一种方法来计算 diff
作为分数,除非 previous_views
是 0
,在这种情况下 diff 应该是 None
.
显然,可以将注释用作 When
子句中的常规字段:
.annotate(
diff=Case(
When(previous_views__gt=0, then= F("total_views") - F("previous_views"))
, default=None, output_field=FloatField())
)