django - Django:基于带条件的注释进行注释
问题描述
我在查询集的注释链末尾执行此操作:
.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())
)
推荐阅读
- python - 在 np 数组的特定列上应用 map 和/或 lambda 函数
- ios - 无法比较属于不同集合的索引:文件 Swift/HashTable.swift
- r - 如果我考虑 else if 条件,则不会生成图表
- mysql - mysql内部连接使用选择器字段的连接
- java - Java - 在大文件中查找字符串模式失败
- reactive-programming - 如何在 Reactor 中使用 Mono 的内容
- windows - 调用 powershell.exe 时,PowerShell 工作目录的定义是什么?
- r - R - ggplot 行和列
- json - 将 JSON 反序列化为类型对象数组(Delphi 11)
- jenkins - 如何使用 Amazon Elastic Container Service Jenkins 插件配置私有 Docker 映像