Odoo中文网|Odoo实施培训

标题: 模型约束的两种方法 [打印本页]

作者: 施程浩    时间: 2018-4-27 16:10
标题: 模型约束的两种方法
本帖最后由 施程浩 于 2018-4-27 16:12 编辑

支持两种类型的约束:SQL和Python
1. sql_constraints定义的类属性。这是一个列表的元组:约束标识符名称;约束的SQL,供使用的错误消息

一个常见的用例是为模型添加唯一的约束。假设我们不想让活动任务具有相同标题:
# class TodoTask(models.Model):
      _sql_constraints = [
         ('todo_task_name_unique',------------名称
         'UNIQUE (name, active)',------------约束条件
         'Task title must be unique!')]----------供使用的错误消息

2.使用@api.constraints 修饰,说明被检查的字段的列表。当其中任何一个被修改,并且在条件失败时将会抛出一个异常,验证就会被触发。
例如,为了验证任务名称至少有五个字符长,我们可以添加以下约束:
from odoo.exceptions import ValidationError
# class TodoTask(models.Model):
      @api.constrains('name')
          def _check_name_size(self):
               for todo in self:
                     if len(todo.name) < 5:
                          raise ValidationError('Must have 5chars!')






欢迎光临 Odoo中文网|Odoo实施培训 (http://www.chinaodoo.net/) Powered by Discuz! X3.2