我创建了一个自定义模块,该模块覆盖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