如何在Odoo中继承Mail.Thread AbstractModel并覆盖此类中的函数?

时间:2015-08-11 07:52:13

标签: python abstract-class odoo-8 overrides

我想从mail.thread抽象类改变一些东西。所以我继承了mail.thread并写了覆盖message_tracked函数。但是它没有调用覆盖函数......只是调用了基函数。它是由mail.thread引起的抽象模型吗?

我尝试了osv.osv和osv.AbstractModel并将此py文件导入 init .py并将'mail'模块放入 openerp .py的依赖项中

class mail_thread(osv.osv):
    _inherit = 'mail.thread'  

class mail_thread(osv.AbstractModel):
    _inherit = 'mail.thread' 

他们没有在此课程中调用任何函数 def write def message_track

如果您不介意,请解释我如何为message_track编写覆盖功能。

1 个答案:

答案 0 :(得分:2)

这可能与此处描述的问题有关: https://github.com/odoo/odoo/issues/9084

作为一种解决方法,您可以尝试解决此问题,如下所述: Override python function in odoo

我是这样做的:

from openerp.addons.mail.mail_thread import mail_thread

message_new_orig = mail_thread.message_new

def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
    # call super function
    msg_id = message_new_orig(self, cr, uid, msg_dict,
                              custom_values=custom_values, context=context)
    # put custom code here
    # ...

    return msg_id

# install overide
mail_thread.message_new = message_new