Odoo中的约束

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826164.html

一:装饰器约束(字段约束)

 装饰器参数指定了约束的字段,当涉及的字段中任一发生改变时触发方法执行。如果不满足约束条件,该方法将引发异常。

@api.constrains('约束字段')
def _check_something(self):
 for record in self:
     if record.约束字段 op 值:
         raise ValidationError("异常信息")

二:代码约束(函数约束,代码层面的约束)

@api.multi
    def _check_XX(self):
      //字段校验函数
        if ...:
           return False
        return True

    _constraints = [
        (_check_XX, u'约束异常信息!', ['约束的字段', ...]),]

三:Sql约束(数据库层面的约束)

    sql约束:使用_sql_constraints属性

    属性值是一个列表,每一个列表元素有三个内容:(name, sql_definition, message):

         name是约束名,

         sql_definition是一个postgresql语句,可以为uniqe检查、或者用聚集函数判断某字段值等等,结果返回值是布尔类型即可,

         message是校验失败时返回的错误消息。

_sql_constraints = [
        ('约束名', 'postgresql校验语句', u'报错信息!')
    ]

   

    例如,唯一性约束:

_sql_constraints = [
        ('xx_uniq', 'unique (唯一性的字段,可以多个字段复合)', u'存在重复的内容!')
    ]
原文地址:https://www.cnblogs.com/ygj0930/p/10826164.html