ndb.StringProperty 的默认值未在我的 App Engine-app 中设置

default-value for ndb.StringProperty are not set at my App Engine-app

我将用户保存在 App Engine 的 NDB 中。有些值是必需的,但并不重要,所以我希望它们在不可用时设置为默认值。 当我创建一个用户(primaryEmail="example@dom.com")时,默认值似乎是一个空字符串:

User(key=Key('User', 4523189241643008),familyName=u'', givenName=u'', primaryEmail=u'example@dom.com')

class User(ndb.Model):
  primaryEmail              = ndb.StringProperty(required=True)
  givenName                 = ndb.StringProperty(required=True, default='<name>')
  familyName                = ndb.StringProperty(required=True, default='<surname>')

设置 StringProperties 的默认值是否有一些我应该知道的限制?

如果您提供空字符串作为参数,NDB 将存储它们。

..., familyName=u'', givenName=u'', ...

如果您不提供参数,它将使用默认值。

User(key=Key('User', 4523189241643008), primaryEmail=u'example@dom.com')

注意:这也意味着您不能将这些字段设为必填:

class User(ndb.Model):
  primaryEmail              = ndb.StringProperty(required=True)
  givenName                 = ndb.StringProperty(default='<name>')
  familyName                = ndb.StringProperty(default='<surname>')

原来是“<...>”字符导致了问题。