odoo-onchange

场景:

当字段被设置为只读时,该字段由其他字段进行改变带出来。常规现象是无法保存到数据库的。

1、实现通过页面某字段数据关联出对应数据表的其他字段的数据;

2、将页面数据进行计算并保存到数据表

相关属性:

onchange + related + readonly + store

实现方法:

方法一、对于直接可以关联过来的字段,采用related 属性将字段属性关联过来,设置readonly=True,并通过store=True进行保存,代码片段如下:

cus_qty_total = fields.Float(string=‘整托数’, digits=(12, 0),
related=‘quotation_id.basic_qty_total’, readonly=True, store=True,)

方法二、对于model中某些字段,不能直接依赖related 进行关联,只能通过onchange进行取数并关联到字段上,处理方法需要model + views配合处理,代码片段如下:

model部分:

quantity = fields.Integer(string='数量', required=True)
unit = fields.Float(string='单价', required=True)
total = fields.Float(string='总价', digits=(12, 2), store=True)

@api.onchange('quantity', 'unit')
    def _onchange_total(self):
        for rec in self:
            rec.total = rec.quantity * rec.unit

views部分:

<field name="total" readonly="1" force_save = "1"/>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值