zoukankan      html  css  js  c++  java
  • Odoo constraints 使用

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

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

     _sql_constraints = [
            ('name_description_check',
             'CHECK(name != description)',
             "The title of the course should not be the description"),
    
            ('name_unique',
             'UNIQUE(name)',
             "The course title must be unique"),
        ]

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

    Constraints:

    @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")

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

  • 相关阅读:
    基于微服务架构的RBAC权限管理系统
    用C#实现基于(OpenId Connect)的单点登录与RBAC权限验证(SSO,OIDC,RBAC)
    量化分析基础
    Ocelot 发现服务总是失败的解决办法
    windows 下安装 theano 及配置 gpu
    python scrapy 爬虫 初学
    layer弹出层框架alert与msg详解
    Workerman-文件监控-牛刀小试
    ECharts 初体验
    实验楼 linux 学习
  • 原文地址:https://www.cnblogs.com/brucexl/p/8036915.html
Copyright © 2011-2022 走看看