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