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


odoo10学习笔记四:onchange、唯一性约束的更多相关文章
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- SQL反模式学习笔记5 外键约束【不用钥匙的入口】
目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
随机推荐
- 源码编译Kubeadm二进制文件
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...
- 2019.6.11_MySQL进阶一:索引
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找.MySQL索引的建立对于MySQL的高效运行是很重要的,索引可 ...
- yii2-CaptchaAction macos500 不显示
把公司一个项目pull到本地 发现验证码不输出了 怀疑是gd库没装 php -m看了下 gd库是装了的 有搜索到可能是因为自带的php拓展生成不了png(觉得不太可能) 试了下自己写一个图片生成pn ...
- 44 dlib鼠标指定目标跟踪
dlib提供了dlib.correlation_tracker()类用于跟踪目标.官方文档入口:http://dlib.net/python/index.html#dlib.correlation_t ...
- Linux学习笔记-第12天 实用的一章
关键词nmtui.nm-connection-editor./etc/sysconfig/network-scripts.iptables.firewalld.firewall-cmd.firewal ...
- Qt 删掉资源qss后报错
Error: dependent '..\..\........XXXX.qss' does not exist. 解决方案: 1.清理工程 2.qmake 3.重新构建
- 本博客采用 CC BY-NC-SA 4.0 进行许可
本博客采用 CC BY-NC-SA 4.0 进行许可
- docker Dockerfile实战
目录 Dockerfile实战 基础pm2 Dockerfile keymetrics/pm2:8-alpine keymetrics/pm2:12-alpine pm2 node Dockerfil ...
- 七、Spring之深入理解AOP源码
Spring之深入理解AOP源码 在上一篇博文中,我们对AOP有了初步的了解,那么接下来我们就对AOP的实现原理进行深入的分析. 在之前写的那个AOP示例代码当中有这样一个注解:@Enable ...
- 解决原生javascript 缺少insertAfter的功能,非Jquery方法
在现有的方法后插入一个新元素,你可能会想:既然有insertBefore方法,是不是也有一个相应的insertAfter()方法.很可惜,DOM没有提供方法.下面编写insertAfter函数,虽然D ...