• odoo10学习笔记四:onchange、唯一性约束


    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189273.html

    一: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语句',
          "异常信息"),
     ]
    复制代码
    复制代码

     

     
  • 相关阅读:
    js关闭当前页面(窗口)的几种方式总结
    Servlet 文件上传
    Servlet Cookie 处理
    Servlet Session 跟踪
    Servlet 异常处理
    Servlet 编写过滤器
    Servlet HTTP 状态码
    Servlet 服务器 HTTP 响应
    Servlet 客户端 HTTP 请求
    Servlet 表单数据
  • 原文地址:https://www.cnblogs.com/ygj0930/p/11189273.html
Copyright © 2020-2023  润新知