• odoo10 onchange、唯一性约束


    一:onchange机制【onchange=前端js函数!可以实现前端实时更新以及修改验证】

    onchange机制:不需要保存数据到数据库就可以实时更新用户界面上的显示。

    @api.onchange('监听的字段', '监听的字段'。。。)
    def _onchange_受影响的字段(self):
        # set auto-changing field
        self.受影响的字段 = 根据监听字段计算出受影响字段的值

    也可以监控某字段值的变化,如果异常则报错:

    @api.onchange('监听的字段')
    def _verify_监听字段(self):
        if 监听字段值异常:
            return {
                'warning': {
                    'title': "异常类型",
                    'message': "具体异常信息",
                },
            }

    二:模型字段约束

    python约束:使用装饰器,@api.constrains('约束字段')

    Python约束通过方法装饰器constraints()来定义,并在记录集上调用这个方法。

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

    @api.constrains('约束字段')
    def _check_something(self):
     for record in self:
         if record.约束字段 op 值:
             raise ValidationError("异常信息")

    sql约束:使用_sql_constraints属性

    属性值是一个列表,每一个列表元素有三个内容:(name, sql_definition, message):

    name是约束字段名

    sql_definition是一个postgresql语句,检查该字段值

    message是校验失败时返回的错误消息

    _sql_constraints = [
         ('name',
          'CHECK(name op 值)',
          "异常信息"),
    
         ('name',
          'sql语句',
          "异常信息"),
     ]
  • 相关阅读:
    Tarjan专题
    Catalan数
    状压DP
    威尔逊定理证明:
    【fzoj 2376】「POJ2503」Babelfish
    Android 源码
    Android实现推送方式解决方案
    Android apk 签名
    圆角的实现
    Android 资源
  • 原文地址:https://www.cnblogs.com/soleZ/p/10076112.html
Copyright © 2020-2023  润新知