我想从 mail.thread 抽象类中改变一些东西。所以我继承了mail.thread,写了override message_tracked函数。但它没有调用覆盖函数......只是调用了基本函数。是不是因为 mail.thread 是抽象模型?
我试过 osv.osv 和 osv.AbstractModel 并在 init.py 中导入这个 py 文件,并将“邮件”模块放在 openerp.py 的依赖 dic 中
class mail_thread(osv.osv):
_inherit = 'mail.thread'
class mail_thread(osv.AbstractModel):
_inherit = 'mail.thread'
他们没有调用这个类中的任何函数 def write 或 def message_track
如果您不介意,请向我解释如何为 message_track 编写覆盖函数。
最佳答案
这可能与此处描述的问题有关: 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
关于python - Odoo 如何继承 Mail.Thread AbstractModel 并重写该类的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936122/