如何在 odoo 12 上覆盖向导的方法

How to override wizard's method on odoo 12

我正在尝试覆盖向导 class 上的单个方法,该方法在用户单击提交时执行。

account_consolidation_custom/wizard/CustomClass.py

class AccountConsolidationConsolidate(models.TransientModel):
    _name = 'account.consolidation.consolidate_custom'
    _inherit = 'account.consolidation.base'

    def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

account_consolidation_custom/__manifest_.py

{
    'name': "account_consolidation_custom",

    'summary': """""",

    'description': """
    """,

    'author': "My Company",
    'website': "http://www.yourcompany.com",

    'category': 'Uncategorized',
    'version': '0.1',

    'depends': ['base','account_consolidation'],

    # always loaded
    'data': [],
}

方法的名字和原来的一模一样,但是当我点击提交按钮时,似乎没有任何反应,仍然是从基础模块而不是自定义调用方法。

你知道如何只覆盖一个方法而不是整个向导吗class?

当为私有属性 _name_inherit 赋予不同值时,您正在创建一个新的 wizard/transient 模型。相反,您应该将原始的 odoo 模型名称 account.consolidation.consolidate 用于两个属性,或者完全删除 _name 属性。

Odoo 有自己的继承机制,由三个 class 属性管理 _name_inherit_inherits.

我能够使用以下代码使其工作:

class AccountConsolidationConsolidate(models.TransientModel):
    _inherit = 'account.consolidation.consolidate'

   def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

之后我可以覆盖基本方法。