Google App Engine: ограничения целостности модели?
-
19-09-2019 - |
Вопрос
У меня есть модель данных, представляющая элементы на сайте электронной коммерции:
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty()
Есть ли способ обеспечить соблюдение ограничений целостности? Например, я хотел бы убедиться, что quantity
никогда не будет быть меньше 0.
Решение
А Конструктор свойств Позволяет указать функцию с названным аргументом «валидатор». Эта функция должна взять один аргумент, значение и повысить исключение, если действительный является недействительным. Например:
def range_validator(minval, maxval):
def validator(v):
if (minval is not None and v < minval) or (maxval is not None and v > maxval):
raise ValueError("Value %s outside range (%s, %s)" % (v, minval, maxval))
return validator
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty(validator=range_validator(0, None))
Обратите внимание, что в примере используется вложенная функция для определения валидаторов общего назначения - вы, конечно, можете использовать простые функции, если вы хотите написать валидатор более специальных целей.
Не связан с StackOverflow