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