【问题标题】:How to override wizard's method on odoo 12如何在odoo 12上覆盖向导的方法
【发布时间】:2020-01-14 16:42:19
【问题描述】:

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

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': [],
}

方法的名字和原来的一模一样,但是当我点击提交按钮的时候,好像什么都没有发生,仍然是从基础模块而不是自定义调用方法。

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

【问题讨论】:

    标签: odoo odoo-12 odoo-accounting odoo-wizard


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复,做了这些更改后还是一样,基本方法仍在执行,而不是自定义。
    • 你有所有的__init__.py文件吗?
    • 是的,我在向导文件夹中有一个__init__.py,并导入了文件名,然后我在主__init__.py上调用向导from . import wizard
    • Ehrm,原来的模型不是 Transient 而是 AbstractModel。
    • 感谢您的支持,我能够通过以下方式使其工作:class AccountConsolidationConsolidate(models.TransientModel): _inherit = 'account.consolidation.consolidate' ,感谢您的帮助!
    【解决方案2】:

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

    class AccountConsolidationConsolidate(models.TransientModel):
        _inherit = 'account.consolidation.consolidate'
    
       def get_account_balance(self, account, partner=False, newParam=False):
        ....my custom code...
    

    之后我能够覆盖基本方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多