odoo开发教程四: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是校验失败时返回的错误消息
分类:
odoo开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决