Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 6691|回复: 0
打印 上一主题 下一主题

模型约束的两种方法

[复制链接]

26

主题

28

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
跳转到指定楼层
楼主
发表于 2018-4-27 16:10: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!')

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-5-3 17:15 , Processed in 0.010815 second(s), 11 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表