![](/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.