【问题标题】:How to inherit Mail.Thread AbstractModel and override function from this class in Odoo?如何从 Odoo 中的此类继承 Mail.Thread AbstractModel 和覆盖函数?
【发布时间】:2015-08-11 07:52:12
【问题描述】:

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

我尝试了 osv.osv 和 osv.AbstractModel 并将这个 py 文件导入 init.py 并将“邮件”模块放入 openerp.py 的依赖 dic

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

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

他们没有调用这个类中的任何函数 def writedef message_track

如果您不介意,请解释一下如何为 message_track 编写覆盖函数。

【问题讨论】:

    标签: python abstract-class odoo-8 overriding


    【解决方案1】:

    这可能与此处描述的问题有关: 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
    

    【讨论】:

    • 我正在使用 odoo 9,但出现此错误: from openerp.addons.mail.mail_thread import mail_thread ImportError: No module named mail_thread
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多