Odoo:自定义模块中的方法不会覆盖原始方法

时间:2016-03-30 13:13:19

标签: python openerp odoo-8 override

我创建了一个自定义模块,该模块覆盖mail.thread模型的message_new方法,允许根据传入电子邮件的内容设置必填字段“partner_id”等的值,从而创建来自传入电子邮件的引用。一切正常,我的方法被调用而不是原来的方法。

我正在尝试将该代码移动到另一个自定义模块中,我将python文件放在自定义模块文件夹中,将导入添加到自定义模块的 init .py文件中并添加“邮件”到 openerp .py文件的依赖部分,就像我之前做的那样。

但是现在安装了新的自定义模块后,message_new方法没有被覆盖,而是从mail.thread调用原始方法。这个自定义模块继承了sale.order和sale.order.line模型,并且正在执行对这些模型所做的更改,所以我不知道为什么mail.thread不受影响时这个新的自定义模块之间的唯一区别旧的是enw模块一次继承并将更改应用于多个模型,而不是仅仅传递给mail.thread模型。

有没有人遇到过继承模型并在之前覆盖它的方法的问题?

更新

根据这个问题的答案,我猜这是一个错误:

How to inherit Mail.Thread AbstractModel and override function from this class in Odoo?

该问题的解决方法对我来说并不完全有效,但删除了message_new_orig声明和后续调用,确实如此:

from openerp.addons.mail.mail_thread import mail_thread

def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):

    # put custom code here
    # ...

    return res_id

# install overide
mail_thread.message_new = message_new

0 个答案:

没有答案