设置默认值无或者''的区别是什么?在Google云DataStore模型中?

时间:2018-05-10 18:13:35

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

在Google Cloud中使用DataStore时,我对None''值有疑问。 e.g。

class User(ndb.Model):
    age = ndb.IntegerProperty(default=None)
    name = ndb.StringProperty(default='')
    address = ndb.StringProperty(default=None)

我设置了默认值,因为我想索引并检索其中一个属性没有被赋值的实体列表。 将StringProperty默认值设置为''None的区别是什么? 哪一个更好,为什么?

1 个答案:

答案 0 :(得分:3)

从索引角度来看,没有区别:None''都是属性将具有的实际值(而不是根本没有设置的值),因此实体将被索引。另见:Does NDB still index with default=None or properties set to None?

StringProperty设置为None(如果允许),在使用时需要进行其他类型检查,因为它可能包含stringNone类型值。将其默认值设置为''将不需要进行此类检查,因为''是一个字符串 - 因此该属性将始终包含string值。