odoo10如何在1个字段中构建2个onchange函数

时间:2019-02-03 12:33:23

标签: python odoo

我在Odoo 10中遇到onchange函数的问题。

这是一些示例代码:

class test_1(models.Model)
    Input = fields.Integer()

从另一个类中,我有一个onchange函数。此类是默认系统,无法在此代码中更改或添加任何内容。

class test_onchange(models.Model)
    @api.onchange('Input')
    def _onchange_test_1(self):
        ## some process ##

这是我正在编写的函数。它也是onchange的{​​{1}}。

Input

所以问题是:

如果class test_onchanger(models.Model) @api.onchange('Input') def _onchange_test_addon(self): ## some process. and different _onchange_test_1 字段已经具有默认值的onchange函数,如何在另一个类/模块的Input字段上构建Input函数系统/代码。

有人知道吗?我可以继承onchange还是其他东西?

2 个答案:

答案 0 :(得分:2)

要确认,您要扩展(在其中添加自定义项)现有的onchange方法吗?

如另一个答案中所述,最简单的方法是仅继承现有的onchange方法。


我们假设这是核心代码,您无法修改:

class CoreClass(models.Model):
    _name = 'core.class'

    Input = fields.Integer()

    @api.onchange('Input')
    def _onchange_input(self):
        ## some process ##

在您的模块中,您可以扩展类并进行其他更改。

注意:当您使用super调用时,核心类方法仍然运行。

class CoreClassCustom(models.Model):
    _inherit = 'core.class'

    @api.onchange('Input')
    def _onchange_input(self):
        res = super(CoreClassCustom, self)._onchange_input()
        ## your custom process ##
        return res

这里是the Odoo 10 ORM Documentation,简要介绍了onchange方法。

答案 1 :(得分:0)

您可以继承现有的onchange方法或为同一字段编写另一个onchange方法,两者都可以。