![](/img/trans.png)
[英]How to set initial value from a model's custom field in a ModelForm in Django
[英]How to set a Django model field's NoData value
我刚刚意识到,我上传到Django模型的数据集包含一个带有“ -999”的字段(称为“ A”),表示NoData。 这使我无法进行计算,但是我不想完全将这些对象从过滤器中排除,仅用于计算,例如:objects.aggregate(Avg('A'))。
如何告诉我的Django模型将此值视为字段A的NoData? 我看到null = True告诉Django将空值存储为NoData,但是当值= -999时如果应该存储Null怎么办。
如果没有直接的方法,最好/最有效的方法是在我进行这些计算时仅使用exclude()吗? 或者,也许我应该在数据库中进行某种替换,以将字段A中的-999转换为Null(如何?)。 我谢谢你
一个快速的解决方案是在聚合查询中使用exclude
:
YourModel.objects.exclude(a=-999).aggregate(Avg('a'))
如果要将-999值替换为None
:
数据迁移将需要调用以下函数:
def update_nodata(apps, schema_editor):
YourModel = apps.get_model('yourappname', 'YourModel')
for obj in YourModel.objects.filter(a=-999):
obj.a = None
obj.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.