zoukankan      html  css  js  c++  java
  • odoo10学习笔记四:onchange、唯一性约束

    原文地址:http://www.cnblogs.com/ygj0930/p/7119767.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语句',
          "异常信息"),
     ]
    复制代码
  • 相关阅读:
    Effective C++:条款14:在中小企业资源管理copying表现
    Linux在iptables教程基本应用防火墙
    C++内存分配和拷贝构造函数写研究
    Codeforces 479E Riding in a Lift(dp)
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/qjtjh/p/8269624.html
Copyright © 2011-2022 走看看