Вопрос

У меня есть модель данных, представляющая элементы на сайте электронной коммерции:

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))

Обратите внимание, что в примере используется вложенная функция для определения валидаторов общего назначения - вы, конечно, можете использовать простые функции, если вы хотите написать валидатор более специальных целей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top