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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:48:21