Python 使用super和not overwrite在odoo模块中扩展向导

Python 使用super和not overwrite在odoo模块中扩展向导,python,module,odoo,Python,Module,Odoo,我在模块中添加了一些新字段,现在我复制了整个api.onchange。见代码: ` @api.onchange('company_id') def _onchange_company_id(self): for wizard in self: wizard.logo = wizard.company_id.logo wizard.report_header = wizard.company_id.report_header

我在模块中添加了一些新字段,现在我复制了整个api.onchange。见代码:

` @api.onchange('company_id')
    def _onchange_company_id(self):
        for wizard in self:
            wizard.logo = wizard.company_id.logo
            wizard.report_header = wizard.company_id.report_header
            wizard.report_footer = wizard.company_id.report_footer
            # NEW: wizard.report_footer1 = wizard.company_id.report_footer1
            # NEW: wizard.report_footer2 = wizard.company_id.report_footer2
            wizard.paperformat_id = wizard.company_id.paperformat_id
            wizard.external_report_layout_id = wizard.company_id.external_report_layout_id
            wizard.font = wizard.company_id.font
            wizard.primary_color = wizard.company_id.primary_color
            wizard.secondary_color = wizard.company_id.secondary_color
            wizard_layout = wizard.env["report.layout"].search([
                ('view_id.key', '=', wizard.company_id.external_report_layout_id.key)
            ])
            wizard.report_layout_id = wizard_layout or wizard_layout.search([], limit=1)

            if not wizard.primary_color:
                wizard.primary_color = wizard.logo_primary_color or DEFAULT_PRIMARY
            if not wizard.secondary_color:
                wizard.secondary_color = wizard.logo_secondary_color or DEFAULT_SECONDARY
正如你所看到的,我不想把所有内容都复制到我的模块中,只想用超级2行代码来扩展。有人能帮我怎么做吗。 问候


PS:我对整个编程和堆栈溢出的世界都是新手,如果我的问题可能会让人困惑甚至愚蠢,我很抱歉^ ^

非常简单。如果重写一个方法,那么可以使用super()或super(您的类名,self)调用它。只需检查重写的方法是否返回任何内容

    @api.onchange('company_id')
    def _onchange_company_id(self):
       result = super(YourClassName, self)._onchange_company_id()
       for wizard in self:
            wizard.report_footer1 = wizard.company_id.report_footer1
            wizard.report_footer2 = wizard.company_id.report_footer2
       return result

简单的答案是重命名方法,删除所有代码只要保持两行就可以了它应该工作得很好,你不必重写方法,因为你没有改变原始的方法逻辑,或者只需调用super,在它完成两行代码后它就可以工作了我没有得到否决票,可能有一个重复的问题,但问题本身确实没问题。也许下议院的选民可以说明这个问题的症结所在,以便改进。