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

Interesting Posts

Что такое хорошая библиотека компьютерного зрения для Python, которая позволит мне найти лица в видео Flash / HTML5?

Как узнать, существует ли слово на английском языке, используя nltk

многопроцессорное копирование глобальной переменной памяти

Beatbox: Как добавить функцию OR в предложение WHERE при извлечении данных из SFDC?

Как получить строковые объекты вместо Unicode от JSON?

Сортировка списка на основе значений из другого списка?

Разбор кортежа из строки?

Заменить скобки для их регулярного выражения

scipy.optimize.curve_fit не может соответствовать сдвинутой перекошенной гауссовой кривой

Операции с файлами на Python

Эффективный способ вычисления среднего значения для каждого столбца или строки ненулевых элементов

Python Pandas: постоянный индекс даты

Как использовать py2app с виртуальной средой?

Мониторинг прогресса по протоколу urllib2

Как успешно передать ссылку функции на функцию reverse () Django?

Python - лучший язык программирования в мире.