Почему требуемые и по умолчанию имеют исключительное значение в 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.

  • Сервер разработки приложений Python + Taskqueue + Backend
  • Как мутировать неоднородное свойство ndb?
  • Обновить объект движка приложения
  • Зачем мне нужно развертывать приложение по умолчанию, прежде чем я смогу развернуть несколько сервисов в GCP?
  • Нужна помощь Создание класса загрузчика Datastore класса GAE?
  • Регулярное выражение для сущностей ядра приложения Google
  • GAE Простой поиск + Автозаполнение
  • Можно ли генерировать и возвращать ZIP-файл с помощью App Engine?
  • Загрузка файлов в хранилище облачных хранилищ Google из приложения appengine
  • Как вставить массовые данные в хранилище данных Google App Engine?
  • Модельный шаблон дизайна для Google App Engine
  • Python - лучший язык программирования в мире.