【发布时间】:2016-04-09 14:55:40
【问题描述】:
我有一个 Django 1.9 查询集 qs,我在其中添加了以下注释:
qs = qs.annotate(total_messages=
Sum(Case(..., output_field=FloatField()))
qs = qs.annotate(spam_messages=
Sum(Case(..., output_field=FloatField()))
qs = qs.annotate(spam_rate=F('spam_messages')/F('total_messages'))
奇怪的是,结果似乎向下舍入(如 Math.floor),所以我得到以下结果(示例):
total_messages = 40.0, spam_messages = 24.0, spam_rate = 0.0
total_messages = 10.0, spam_messages = 10.0, spam_rate = 1.0
此外,这种行为可能仅在从 Django 1.7 升级到 Django 1.9 后发生。
我做错了什么还是一个错误?
提前致谢!
【问题讨论】:
-
你能充实你
Case表达式中的...吗?
标签: python django django-orm annotate