2

我在默認值爲False的模型上創建了一個名爲'blank'的新布爾屬性。NDB數據存儲。如何區分默認值和未設置的區別

我想回去設置那些還沒有設置的。但我不想更新已添加的新實際設置爲默認False的新設備。

當我打印出對象時,在輸出中看不到'空白'。

但如果我這樣做

obj.blank 

我看到 '假'。

所以真的我只是想能夠發現 - 是在這個obj上實際設置的False還是隻是返回默認值。

任何方式來做到這一點?

謝謝。

回答

3

如果您從一開始就設置了默認設置,那麼即使用戶沒有更新/更改它,也可以保證該屬性不會丟失。所以我猜測你之後增加了這個值。我建議你有批處理任務,或者通過你的實體運行,只是put(),所以它會實際設置缺省值。

話雖如此,我不確定之後是否可以檢查它。

+0

瞭解數據存儲的無模式特性是這些答案爲何正確的關鍵。舊的實體依然存在,他們根本沒有財產。 「無」對於像「if」這樣的條件測試來說會是足夠的麻煩,儘管我懷疑該屬性存在於該對象上,並且實際上*具有OP所暗示的「False」值。 – Nick

1

更改前保存的每個實體都沒有保存在數據存儲中的空白屬性。

當你得到其中一個實體並要求空白屬性時,你應該得到None作爲結果。

getattr(entity_saved_before_change, 'blank') == None # this returns True 

isinstance(getattr(entity_saved_after_change, 'blank'), bool) == True # this returns True 

所以,只需檢查值爲無。

相關問題