【问题标题】:Google App Engine: Model integrity constraints?Google App Engine:模型完整性约束?
【发布时间】:2010-03-10 01:35:52
【问题描述】:

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

class Item(db.Model):
    CSIN = db.IntegerProperty()
    name = db.StringProperty()
    price = db.IntegerProperty()
    quantity = db.IntegerProperty()

有没有办法强制执行完整性约束?例如,我想确保 quantity 永远不会设置为小于 0。

【问题讨论】:

    标签: database google-app-engine model gql


    【解决方案1】:

    Property constructor 允许您使用“验证器”命名参数指定函数。此函数应采用一个参数,即值,如果有效值无效,则引发异常。例如:

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

    请注意,该示例使用嵌套函数来定义通用验证器 - 如果您想编写更特殊用途的验证器,当然可以使用简单函数。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2015-04-11
      • 2020-01-14
      相关资源
      最近更新 更多