首页 > 解决方案 > Odoo:onchange 中的 Override Integer 字段不起作用,而 Float 已更改 - 为什么?

问题描述

我用以下字段扩展了 product.template:

length = fields.Integer("Length", default=0)
length_float = fields.Float("Float", default=0.0)

此外,我还使用此字段和 onchange 方法扩展了 product.packaging 模型:

product_id_ref = fields.Many2one('product.product', string="Product Reference")
length = fields.Integer('Length')
length_float = fields.Float('Length_Float')

@api.onchange("product_id_ref")
def _onchange_product(self):        
    if self.product_id_ref:
        self.length_float = self.product_id_ref.length_float
        self.length = self.product_id_ref.length

有趣的是,FLOAT字段 length_float已按预期更改并显示在视图中。INTEGER字段未更改

更令人惊讶的是,如果我更改 onchange 方法的顺序

@api.onchange("product_id_ref")
def _onchange_product(self):        
    if self.product_id_ref:
        self.length = self.product_id_ref.length
        self.length_float = self.product_id_ref.length_float

没有值改变

怎么可能??有人有想法吗?

谢谢!

标签: odoo

解决方案


结果发现问题出在“长度”字段本身。此名称会导致 javascript 方面的问题。重命名会导致所需的结果。


推荐阅读