线程 Filter debugging testing mvvm stack casting scope Vanilla JS sql server 视频教程 click事件 jquery的each遍历方法 bootstrap时间轴 mysql批量更新数据 mysql卸载重装 java解析pdf 查看mysql密码 python网络编程 python正则提取字符串 python参数 python程序代码 python安装程序 java继承 搭建java开发环境 java运行环境 java中基本数据类型 怎么安装java环境 java线程死锁 linuxsudo命令 linux硬盘 方正兰亭字体下载 视频相册制作软件 深渊碎片 python图片处理 编程之家 qq流览器下载 ps反选 寂静城 hedit 小米手环怎么连接手机
当前位置: 首页 > 学习教程  > 编程语言

odoo的约束 --- _sql_constraints[]和@api.constrains的区别

2020/12/5 10:05:02 文章标签:

在日常开发Odoo的过程中,我们不免要用到Constraints,中文就是约束。 首先我们来介绍下Odoo里面的两种Constraints。 一 _sql_constraints:就是添加一个数据库的约束。 _sql_constraints是odoo的属性,是一个元祖的列表&#xff0c…

在日常开发Odoo的过程中,我们不免要用到Constraints,中文就是约束。
首先我们来介绍下Odoo里面的两种Constraints。

一 _sql_constraints:就是添加一个数据库的约束。
_sql_constraints是odoo的属性,是一个元祖的列表,每个元祖是一个数据库约束。元祖的第一个元素是约束名字,第二个元素是约束规则(postgresql约束规则),第三个参数是如果违反约束弹出来的警告信息。

_sql_constraints = [
        ('name_uniq', 'unique(name, company_id)', 'Reference must be unique per Company!'),
        ('qty_positive', 'check (product_qty > 0)', 'The quantity to produce must be positive!'),
    ]

注意在使用SQL Constraints,需要确保当前数据库里面没有违反该约束的数据,如果有违反约束的数据在更新模块的时候系统日志里面会有警告信息,大家要注意这个。

二 api.constrains()

@api.constrains('instructor_id', 'attendee_ids')
    def _check_instructor_not_in_attendees(self):
        for r in self:
            if r.instructor_id and r.instructor_id in r.attendee_ids:
                raise exceptions.ValidationError("A session's instructor can't be an attendee")

通过装饰器@api.constrains(字段),每次记录修改的时候,如果包含了装饰器定义的字段就会触发下面的方法,所以需要在方法里面判断是否违反约束,如果违反,则通过raise异常来弹出警告框并阻止记录保存。使用odoo Constraints的时候就算是系统内已经有违反约束的记录也可以对新记录生效。

转载自:https://blog.csdn.net/weixin_34127717/article/details/94030749


本文链接: http://www.dtmao.cc/news_show_450144.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?