Обязательное пользовательское свойство - PullRequest
1 голос
/ 04 августа 2011

Я создаю пользовательский db.Property подкласс:

class PropertyFoo(db.StringProperty):
  def validate(self, value):
    # Yes this is a pointless validator, but please read on
    return value

  def get_value_for_datastore(self, model_instance):
    return super(PropertyFoo, self).get_value_for_datastore(model_instance)

  def make_value_from_datastore(self, value):
    return super(PropertyFoo, self).make_value_from_datastore(value)

Теперь я также создаю db.Model подкласс:

class ModelFoo(db.Model):
  foo = PropertyFoo(required=True)

Поэтому я проверяю их:

>>> m = ModelFoo()
# No errors :(
>>> m.foo
# No errors still
>>> print m.foo
'None' # <-- Why???

Я должен ожидать ошибку вроде:

BadValueError: Property foo is required

Как мне убедиться, что мой пользовательский подкласс Property, когда он равен required, вызывает BadValueError?Я что-то упустил в своем PropertyFoo определении?

1 Ответ

3 голосов
/ 04 августа 2011

Я считаю, что вам нужно вызвать метод validate суперкласса:

class PropertyFoo(db.StringProperty):
  def validate(self, value):
    super(PropertyFoo, self).validate(value) #Base implementation checks
    #Do your other check here raising BadValueError
    return value
...