odoo 学习笔记 - 计算字段、onchange 机制、模型约束

本文介绍了Odoo中的Domain表达式,用于定义模型子集的规则集合。接着讲解了计算字段的概念,这些字段的值通过模型方法实时计算。文章还讨论了计算字段的依赖性、默认值的设置方法,以及如何利用onchange机制在用户输入时动态更新表单。最后,探讨了模型约束,包括Python约束和SQL约束,它们在数据验证中的作用。
摘要由CSDN通过智能技术生成

Domain

Domain 代表记录集的条件表达式。Domain 是定义模型子集的规则集合。每个规则是一个包含名称、操作和值的三元组

例如,下面是Product模型子集的Domain表达式,“单价大于1000且类型为服务”的记录集:

[('product_type', '=', 'service'), ('unit_price', '>', 1000)]

多个规则组合时,默认条件组合方式是AND。逻辑运算符&(AND),|(OR),!(NOT)可以用来显示的组合多个规则。它们在前缀位置使用(操作符在参数之前,而不是中间)。例如下面的Domain表达式,含义是"类型为服务或者单价不介于1000和2000之间"



计算字段和默认值

说明

字段也可以通过计算获得。在这种情况下,字段的值不是直接检索自数据库,而是通过调用模型的方法来实时计算获得。要创建计算字段,需要设置它的compute属性为方法名。这个计算方法通过计算self的每条记录来设置字段的值。

self是一个记录的有序集合,它支持标准的Python集合操作,如len(self)和iter(self),加上额外的集合操作recs1 + recs2。迭代过程逐个提供self记录,其中每个记录本身是大小为1的集合。你可以通过点记号来访问/分配单个记录上的字段record.name

依赖

计算字段的值通常取决于所在记录行的其它字段的值。ORM层期望开发人员使用depends()装饰器来指定计算方法的依赖性。当某些依赖关系被修改后,ORM层通过给定的依赖关系来触发字段的重新计算。

from odoo import models, fields, api

class ComputedModel(models.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值