我在默認值爲False的模型上創建了一個名爲'blank'的新布爾屬性。NDB數據存儲。如何區分默認值和未設置的區別
我想回去設置那些還沒有設置的。但我不想更新已添加的新實際設置爲默認False的新設備。
當我打印出對象時,在輸出中看不到'空白'。
但如果我這樣做
obj.blank
我看到 '假'。
所以真的我只是想能夠發現 - 是在這個obj上實際設置的False還是隻是返回默認值。
任何方式來做到這一點?
謝謝。
我在默認值爲False的模型上創建了一個名爲'blank'的新布爾屬性。NDB數據存儲。如何區分默認值和未設置的區別
我想回去設置那些還沒有設置的。但我不想更新已添加的新實際設置爲默認False的新設備。
當我打印出對象時,在輸出中看不到'空白'。
但如果我這樣做
obj.blank
我看到 '假'。
所以真的我只是想能夠發現 - 是在這個obj上實際設置的False還是隻是返回默認值。
任何方式來做到這一點?
謝謝。
如果您從一開始就設置了默認設置,那麼即使用戶沒有更新/更改它,也可以保證該屬性不會丟失。所以我猜測你之後增加了這個值。我建議你有批處理任務,或者通過你的實體運行,只是put()
,所以它會實際設置缺省值。
話雖如此,我不確定之後是否可以檢查它。
更改前保存的每個實體都沒有保存在數據存儲中的空白屬性。
當你得到其中一個實體並要求空白屬性時,你應該得到None作爲結果。
getattr(entity_saved_before_change, 'blank') == None # this returns True
isinstance(getattr(entity_saved_after_change, 'blank'), bool) == True # this returns True
所以,只需檢查值爲無。
瞭解數據存儲的無模式特性是這些答案爲何正確的關鍵。舊的實體依然存在,他們根本沒有財產。 「無」對於像「if」這樣的條件測試來說會是足夠的麻煩,儘管我懷疑該屬性存在於該對象上,並且實際上*具有OP所暗示的「False」值。 – Nick