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

 

转载请注明原文地址:http://www.javashuo.com/article/p-umwvapux-ma.htmlhtml

 

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

onchange机制:不须要保存数据到数据库就能够实时更新用户界面上的显示。python

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

也能够监控某字段值的变化,若是异常则报错:sql

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

 

二:模型字段约束数据库

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

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

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

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

 

sql约束:使用_sql_constraints属性学习

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

name是约束字段名

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

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

复制代码
复制代码
_sql_constraints = [
     ('name',
      'CHECK(name op 值)',
      "异常信息"),

     ('name',
      'sql语句',
      "异常信息"),
 ]
复制代码
复制代码
相关文章
相关标签/搜索