Значение по умолчанию для ndb.StringProperty не установлено в моем приложении App Engine

Я сохраняю пользователей в NDB App Engine. Некоторые значения являются обязательными, но необязательными, поэтому я хочу, чтобы они были установлены по умолчанию, если они недоступны. Когда я создаю пользователя (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, о которых я должен знать?

2 ответа

Решение

Оказалось, что символы<<>> вызвали проблему.

Если вы предоставите пустые строки в качестве параметров, 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>')
Другие вопросы по тегам