Odoo onchange无法正常工作

时间:2018-08-07 10:46:37

标签: odoo odoo-10 odoo-9

我继承了purchase.order.line,并尝试在字段中更改值。对于product_qty,我可以更改值,但是对于price_unit,我不能更改值。

我的自定义.py文件:

class PurchaseOrderLine(models.Model):

_inherit = 'purchase.order.line'


@api.onchange('product_id')
def my_fucn(self):
    for rec in self:
        rec.product_qty = 10  #WORKING
        rec.price_unit = 1    #NOT WORKING

也许是问题所在,因为原始的purcahase.py odoo文件中也有@ api.onchange('product_id')。

有解决方案吗?

1 个答案:

答案 0 :(得分:2)

您无法预测哪种onchange方法将首先或最后被触发,但是product_idpurchase.order.line的原始onchange方法更改是设置price_unit字段,而不是{ {1}}字段。

因此,似乎您的方法在另一个方法之前被调用,因为product_qty被覆盖。您可以通过调试这两种方法进行检查。

现在该怎么办?我希望扩展原始方法:

price_unit

在您的情况下,@api.onchange('product_id') def the_original_method(self): res = super(PurchaseOrderLine, self).the_original_method() # your logic here return res 的更改将触发另一个onchange事件。请始终记住,字段更改会触发onchange事件和字段重新计算。

尝试扩展两种方法:

product_qty