Odoo 16自定义模块已加载但未创建数据库表问题求助
Odoo自定义模块未生成数据库表排查方案
检查模型类定义正确性
确保models/baz_test.py中的模型类正确继承自models.Model,并设置合法的_name属性,示例如下:from odoo import models, fields class BazTest(models.Model): _name = 'baz.test' # 遵循Odoo命名规范,对应数据库表名为baz_test _description = 'Baz Test Model' name = fields.Char(string='Name')注意:若
_name与系统已有模型重名,或误继承models.AbstractModel/models.TransientModel,则不会生成持久化数据库表。验证manifest.py及导入配置
确认manifest文件中models字段正确指向模型文件,且依赖包含base:{ 'name': 'Baz Test', 'version': '1.0', 'depends': ['base'], 'data': [], 'installable': True, 'auto_install': False, 'models': ['models.baz_test'], }同时检查模块根目录
__init__.py是否导入models模块:from . import models以及models目录下
__init__.py是否导入目标模型:from . import baz_test确认升级命令的有效性
执行升级时需指定目标数据库,避免操作到默认数据库:odoo-bin -d your_database_name -u baz_test查看Debug级日志定位错误
启动Odoo时开启debug日志,排查模型定义、语法或依赖相关的隐性错误:odoo-bin -d your_database_name -u baz_test --log-level=debug检查PostgreSQL用户权限
确保Odoo使用的数据库用户拥有目标数据库的建表权限,可执行以下SQL语句授权:GRANT ALL PRIVILEGES ON DATABASE your_database_name TO odoo_user;排查模型类型是否正确
若模型继承models.AbstractModel,仅生成抽象字段不会创建独立表;若继承models.TransientModel,生成的是会话结束后会被清理的临时表(前缀tmp_),不会在常规数据库查询中显示。
内容的提问来源于stack exchange,提问作者Bazag
相关产品推荐
相关产品推荐

