我继承了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')。
有解决方案吗?
答案 0 :(得分:2)
您无法预测哪种onchange方法将首先或最后被触发,但是product_id
中purchase.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