我正在查询集的注释链的末尾执行此操作:
.annotate(diff=F("total_views")/F("previous_views")
问题在于total_views
和previous_views
本身都是注释。除F("previous_views")
等于0之外,这是可行的。然后我得到了除以零的误差。所有尝试使用Case
/ When
的尝试都失败了。
我正在寻找一种将diff
计算为分数的方法,除非previous_views
是0
,在这种情况下diff应该是None
。
答案 0 :(得分:2)
显然,可以使用注释,就好像它是When
子句中的常规字段一样:
.annotate(
diff=Case(
When(previous_views__gt=0, then= F("total_views") - F("previous_views"))
, default=None, output_field=FloatField())
)