Как вы проверяете пустую строку поля формы ''
, чтобы присвоить None IntegerProperty?
class MyIntegerProperty(ndb.IntegerProperty):
def _validate(self, value):
if isinstance(value, basestring):
if len(value) == 0 and self._required is False:
return ?????????????????
try:
value = int(value)
except ValueError:
raise BadValueError(u'{0} must be a valid '
'integer'.format(self._name))
if value < 0:
raise BadValueError(u'{0} must be '
'positive'.format(self._name))
return value
class Account(ndb.Model):
posint = MyIntegerProperty()
То, что _validate(), _to_base_type() и _from_base_type() не нужно обрабатывать:
None: они не будут вызываться с None (и если они возвращают None, это означает, что значение не нуждается в преобразовании).
Что я сейчас делаю, так это вручную обрабатываю дело:
if len(request.form[name]) == 0:
delattr(entity, name)
else:
setattr(entity, name, request.form[name])
это может быть умнее, чем это?
None
является недопустимым значением дляIntegerProperty
, я ожидаю, что мойaccount.posint is None
вернетFalse
28.11.2018