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

odoo开发教程四:onchange、唯一性约束的更多相关文章

  1. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

    原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...

  2. 开发教程(四) MIP组件平台使用说明

    组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...

  3. Odoo中如何复制有唯一性约束的记录?

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281393.html  如果为模型的字段添加了唯一性约束,那么在记录的form视图功能菜单上选择“复制”时就会 ...

  4. Odoo 二次开发教程(四)-只读、唯一性验证和ORM方法介绍

    一.只读和唯一性验证 只读的设置有两种方法,一种是实在字段定义时设置为只读,第二种是在页面视图中进行设置. 接前例,我们将学生(tech.student)的名字name字段设置成只读. 方法一:字段定 ...

  5. XAF应用开发教程(四)应用程序模型

    XAF是重量型框架,确实够重量的,方方面面都做得规规矩矩. 如果看了前面三节,可能会认为,这N多的Attribute到底都是从哪里来的?到底有多少这样的Attribute?如果不够用了怎么办?等着官方 ...

  6. odoo开发笔记 -- 字段增加唯一约束

    前台违反约束效果: 后台模型中定义代码: name = fields.Char(string="Name", copy=False) # 流水号 _sql_constraints ...

  7. Android OpenGL ES 开发教程 从入门到精通

    感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...

  8. MIP开发教程(一) MIP-CLI工具安装与环境部署

    依赖安装 安装 MIP-CLI 创建开发文件结构 1. 依赖安装 MIP-CLI 使用 NPM 安装,依赖 node 环境: node 安装-windows node 安装-mac MIP-CLI 开 ...

  9. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页

    初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置: $ mip i ...

  10. MIP开发教程(三) 使用MIP-CLI工具调试组件

    一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发 ...

随机推荐

  1. scrcpy软件的使用

    一.scrcpy软件介绍: scrcpy是通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备.它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需 ...

  2. 柏林噪声算法(Perlin Noise)

    概述 引述维基百科的介绍: Perlin噪声(Perlin noise,又称为柏林噪声)指由Ken Perlin发明的自然噪声生成算法,具有在函数上的连续性,并可在多次调用时给出一致的数值. 在电子游 ...

  3. Mybatis中批量插入和一些问题的解决

    批量插入有三个问题,第一是执行效率,第二数据冲突,第三数据重跑更新操作. 一般对于这样的问题有以下操作方法. 第一是执行效率:mybatis支持两种高效插入. 1.mybtis的foreach标签,f ...

  4. 1 Android开发书籍

    不管你是Android菜鸟还是Android高手,一定能够找到一本适合自己阅读的书籍.下面为大家推荐8本书. <Android进阶之光> <Android进阶之光>详细并深入讲 ...

  5. Python3.8环境安装PyHook3

    Python3.8环境安装PyHook3 1. 安装python对应版本的pyhook3网  址:https://pypi.org/project/PyHook3/#files如果没有对应版本,请下载 ...

  6. [网络]内网IP的判别与分类

    1 内网IP划分 内网IP地址分为A类.B类和C类,其地址范围如下: A类地址: 10.0.0.0 - 10.255.255.255 B类地址: 172.16.0.0 - 172.31.255.255 ...

  7. AF_XDP技术简介

    本文分享自天翼云开发者社区@<AF_XDP技术简介>,作者: l****n 一.概述 AF_XDP 是一项新增的,针对高性能数据包处理进行优化的地址族协议.本文档假设读者已经熟悉 BPF ...

  8. 常用模块time模块

    时间模块: 一:time import time time的解析: 时间分为三种格式: 第一种: 第二种: 第三种: 二:datatime import datatime  #表达形式 print(d ...

  9. ros-python学习样例笔记

    1.通信基本原理介绍 待写 2.三种通信方式的程序样例(python版) 2.1 topic 通信方式(非自定义和自定义) 2.1.1 创建工作空间和topic功能包 在ubuntu中打开命令行,输入 ...

  10. 【Java SE】反射

    Java Reflection 1 Java 反射机制概述 Reflection反射被视为动态语言的关键,反射机制允许在运行期间借助于Reflection取得任何类的内部信息,并能直接操作任意对象的内 ...