Python 使用super和not overwrite在odoo模块中扩展向导
我在模块中添加了一些新字段,现在我复制了整个api.onchange。见代码: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('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,在它完成两行代码后它就可以工作了我没有得到否决票,可能有一个重复的问题,但问题本身确实没问题。也许下议院的选民可以说明这个问题的症结所在,以便改进。