NDB数据存储区。如何区分默认值和尚未设置的默认值

时间:2015-12-16 16:53:17

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我在名为'blank'的模型上创建了一个新的布尔属性,默认值为False。

我想回去设置尚未设置的那些。但我不想更新已添加并实际设置为默认False的新内容。

当我打印出对象时,我的输出中看不到“空白”。

但如果我这样做

obj.blank

我看到'假'。

所以我真的希望能够找到 - 实际上是在这个obj上设置了False,还是只返回默认值。

有什么办法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

如果从一开始就有默认设置,这将保证该属性不会丢失,即使用户没有更新/更改它。所以我猜你之后添加了这个值。我建议你让批处理任务或其他东西在你的实体中运行,而只是put()所以如果缺少它,它会实际设置默认值。

话虽如此,我不确定之后是否可以检查它。

答案 1 :(得分:1)

更改前保存的每个实体都没有保存在数据存储区中的空白属性。

当您获得其中一个实体并要求空白属性时,您应该将“无”作为结果。

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

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

因此,只需检查值为None。