odoo12的计算字段compute和related

**

odoo12的计算字段compute和related

**
odoo的计算字段默认不保存在数据库中,使用的时候在进行计算,不能用作domain等筛选的时候或者其他函数中引用该字段使用,可以使用store=True强制保存到数据库中.但是加了store=True表示该字段只能计算一次.下面来看一下compute和related的时候怎么解决只计算一次的问题

  1. compute利用函数进行计算,加上@api.depends()装饰器,依赖其他字段触发计算.这样便可以解决store=True只计算一次的问题
  2. related依赖其他字段

怎么修改计算字段的值?
计算字段默认是只读的,要想修改计算字段,就要在字段定义中加入inverse属性inverse=‘函数名’,反参数的使用非常简单。通常,计算字段是只读的,因为它从记录集即时计算值。如果您需要在 计算字段上进行手动输入,可以通过给出反函数来完成。因此,当字段被写入/创建时,它会触发对修饰函数的调用。它反转计算并设置相关字段。

Invserse 通俗点讲的话,他是 Compute 的相反设置.我们在 field 中设置了它对应的 Compute 计算方法,那么这个字段就变成了只读的,这时候我们可以设置 inverse,来达到为该字段赋值的目的。设置了 inverse 这个,字段就可以在前端直接编辑,赋值就是通过这个 inverse 设置的方法

upper=fields.Char(compute='_compute_upper',inverse='_inverse_upper', search='_search_upper')

@api.depends('employee_id') 
def _compute_upper(self):
for rec in self:
	rec.upper = rec.employee_name.upper() if rec.employee_name else False

def _inverse_upper(self): 
for rec in self:
	rec.employee_name = rec.upper.lower() if rec.upper else False
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值