【发布时间】:2018-10-19 03:51:07
【问题描述】:
我刚刚意识到我上传到 Django 模型的数据集有一个字段(称为“A”),其中“-999”表示 NoData。这会影响我的计算,但我不想完全从过滤器中排除这些对象,仅用于计算,例如:objects.aggregate(Avg('A'))。
如何告诉我的 Django 模型将此值视为字段 A 的 NoData?我看到 null=True 告诉 Django 将空值存储为 NoData,但是当值 = -999 时它应该存储 Null 怎么办。
如果没有直接的方法,那么每当我进行这些计算时,最好/最有效的方法是使用 exclude() 吗?或者,也许我应该在我的数据库中进行某种替换,以将字段 A 中的 -999 转换为 Null(如何?)。谢谢你
【问题讨论】:
-
当我阅读你的问题时,我在想“你可能想使用
exclude()”,然后我到了最后一句话。这可能是计算平均值的最快方法,但是如果您想减少数据库上的负载,那么您应该过滤(排除)并评估查询集并对其进行迭代,计算运行总数和对象数量以获得python 中的平均值,而不是数据库中的平均值。