Почему требуемые и по умолчанию имеют исключительное значение в ndb?

В старых API-интерфейсах API-приложений Google API «требуется» и «по умолчанию» могут использоваться вместе для определения свойств. Используя ndb, я получаю

ValueError: repeated, required and default are mutally exclusive. 

Образец кода:

 from google.appengine.ext import ndb from google.appengine.ext import db class NdbCounter(ndb.Model): # raises ValueError count = ndb.IntegerProperty(required=True, default=1) class DbCounter(db.Model): # Doesn't raise ValueError count = db.IntegerProperty(required=True, default=1) 

Я хочу создать экземпляр счетчика без указания значения. Я также хочу, чтобы кто-то не мог переопределить это значение None. Вышеприведенный пример построен. Возможно, я мог бы жить без обязательного атрибута и вместо этого добавить метод increment (). Тем не менее, я не вижу причины, по которой требуемые и дефолт взаимоисключающие.

Это ошибка или функция?

2 Solutions collect form web for “Почему требуемые и по умолчанию имеют исключительное значение в ndb?”

Я думаю, вы правы. Возможно, я был смущен, когда написал эту часть кода. Имеет смысл, что «required = True» означает «не разрешать запись значения None», поэтому его можно объединить со значением по умолчанию. Отправьте запрос функции в трекер NDB: http://code.google.com/p/appengine-ndb-experiment/issues/list

Обратите внимание, что для повторных свойств все сложнее, повторное, вероятно, будет по-прежнему несовместимым ни с обязательным, ни с по умолчанию, даже если эта функция реализована.

Я не уверен, что предназначалось, heres – это «объяснение» из appengine.ext.ndb.model.py:

 The repeated, required and default options are mutually exclusive: a repeated property cannot be required nor can it specify a default value (the default is always an empty list and an empty list is always an allowed value), and a required property cannot have a default. 

Остерегайтесь того, что ndb имеет какое-то другое очень раздражающее поведение (текст> 500 байтов невозможен без обезвреживания патчей с расширительной моделью, фильтрация на .IN ([]) вызывает исключение …). Поэтому, если вам не нужны улучшения скорости благодаря кешированию, вам следует подумать о том, чтобы остаться с ext.db atm.

  • Google Prediction API, Hello Prediction: ошибка - слишком много аргументов
  • Операции чтения и записи, связанные с ComputedProperty в GAE NDB
  • Можно ли определить с помощью NDB, если модель устойчива в хранилище данных или нет?
  • Google App Engine - Java или Python?
  • Очередь задач работает с представлением, но UnknownQueueError при запуске от модульных тестов
  • Простой пример управления пользователями для Google App Engine?
  • Получение Django 1.7 для работы с Google App Engine
  • Ошибка 403 при подключении к Google Analytics с помощью Python 2.7.x
  • Python - лучший язык программирования в мире.