0

Я сохраняю пользователей в NDB App Engine. Некоторые значения необходимы, но необязательны, поэтому я желаю, чтобы они установили значения по умолчанию, если они недоступны. Когда я создаю пользователя (primaryEmail = «[email protected]»), значение по умолчанию, кажется, пустая строка:default-value для ndb.StringProperty не установлены в моем приложении App-app

User(key=Key('User', 4523189241643008),familyName=u'', givenName=u'', primaryEmail=u'[email protected]') 

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

Существуют некоторые ограничения для установки по умолчанию и значения для StringProperties, что я должен знать около?

ответ

1

вывернуть '< ...>' символов вызвало проблему.

+1

Что? Как они вызвали проблему? Это сюрприз для меня. –

1

Если вы предоставите пустые строки в качестве параметров, NDB сохранит их.

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

Если вы не указали параметры, они будут использовать значения по умолчанию.

User(key=Key('User', 4523189241643008), primaryEmail=u'[email protected]') 

Примечание: Это также означает, что вы не можете сделать эти поля требуется:

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

Вот как это должно работать, но мой опыт - это нечто иное. Я уверен, что я только установил primaryEmail. –

+0

Если я удаляю значение по умолчанию, я получаю: BadValueError: Entity имеет неинициализированные свойства: givenName, familyName –

+0

Я обновил свой ответ запиской, чтобы удалить аргументы 'required = true' –

 Смежные вопросы

  • Нет связанных вопросов^_^