簡體   English   中英

如何設置Django模型字段的NoData值

[英]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

  1. 使用正確的參數調整您的“模型”字段(例如:null = True)
  2. 進行架構遷移
  3. 進行數據遷移

數據遷移將需要調用以下函數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM