我有一个代表电子商务网站项目的数据存储模型:

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