Odoo 16插件开发:覆写内置方法失败求助
Odoo 16 覆写
mail.activity的action_notify方法失效问题排查与解决 1. 修正插件依赖配置
你的插件必须明确依赖mail模块,否则Odoo加载顺序会导致覆写代码无法生效。在__manifest__.py中添加依赖配置:
'depends': ['mail'],
模块加载顺序规则是:依赖模块先加载,你的模块后加载,这样才能正确覆写核心模块的方法。
2. 匹配原方法的完整签名
Odoo 16核心mail.activity的action_notify方法带有**kwargs参数,你的方法签名不匹配会被识别为新方法而非覆写。修改代码如下:
from odoo import models import logging _logger = logging.getLogger(__name__) class MailActivity(models.Model): _inherit = 'mail.activity' def action_notify(self, **kwargs): _logger.info("LOG: action_notify method invoked") return # 直接返回跳过原有功能
3. 正确升级插件并清除缓存
- 重启Odoo服务,确保新代码被加载
- 在Odoo后台找到你的插件,点击升级(已安装的模块需升级而非重新安装,才会重新加载代码)
- 可手动删除插件目录及Odoo核心目录下的
__pycache__文件夹,清除Python字节码缓存
4. 验证日志输出
如果日志未显示,检查Odoo日志级别配置:
- 启动Odoo时添加参数
--log-level=info,或在odoo.conf中设置log_level = info - 临时改用
_logger.warning测试(warning级别默认开启,更容易看到输出)
5. 检查文件与导入正确性
- 确认模型文件名是
models/mail_activity.py,无拼写错误 - 确认
models/__init__.py中from . import task, mail_activity语句无拼写错误 - 根目录
__init__.py的from . import models配置正确
内容的提问来源于stack exchange,提问作者Fed C
相关产品推荐
相关产品推荐

