You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Odoo模型的原始定义模块?

解答

这是预期行为吗?

是的,这是Odoo的正常行为。_module属性实际记录的是最后一个对该模型进行继承扩展或修改的模块,而非模型最初定义的模块。当snailmail_account_followup模块继承并修改了res.partner后,_module就会被覆盖为这个模块的名称,完全符合Odoo动态模型继承的机制。

获取原始定义模块的正确方法

要拿到模型最初定义的模块,最可靠的方式是查询存储模型元数据的ir.model表,其中的module字段保存了模型原始定义所在的模块:

env['ir.model'].search([('model', '=', 'res.partner')]).module

执行后会返回base,也就是res.partner的原始定义模块。

如果不想查数据库,也可以尝试查看模型的_inherit属性,但这种方法在模型被多层继承时容易出错,所以优先推荐ir.model的查询方式。

内容的提问来源于stack exchange,提问作者Seaworn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:44:54