求问Odoo v17/v16核心模型的公开数据模型文档资源
获取Odoo核心模型数据模型与ER图的实用方案
一、从Odoo实例直接提取
- 查看模型与字段元数据:启用开发者模式后,进入「设置 > 技术 > 数据库结构 > 模型」,这里能查看所有核心模型的字段详情——默认
id是主键(PK),类型为many2one/one2many/many2many的字段对应外键(FK),还可导出这些数据整理成数据字典。 - 生成ER可视化图:安装
graphviz依赖后,执行命令odoo-bin scaffold --models=all --output=er_diagram,Odoo会自动生成包含所有模型关联关系的ER图文件。
二、构建自定义数据字典
可以通过简单的Python脚本遍历Odoo元数据模型,导出结构化的字段信息:
from odoo import models def generate_data_dictionary(env): models = env['ir.model'].search([]) for model in models: print(f"### 模型:{model.name} ({model.model})") fields = env['ir.model.fields'].search([('model_id', '=', model.id)]) for field in fields: pk_tag = "*PK*" if field.name == 'id' else "" fk_tag = f"*FK关联:{field.relation}*" if field.ttype in ('many2one', 'one2many', 'many2many') else "" print(f"- 字段名:{field.name} | 类型:{field.ttype} | {pk_tag} {fk_tag}")
调用时只需传入Odoo环境对象,即可输出Markdown格式的数据字典。
三、社区工具与数据库查询
- 社区模块辅助:安装
base_report_erpdiagram模块,启用后在后台就能直接生成并下载ER图,该模块会自动梳理模型间的关联逻辑。 - 数据库直接查询:连接Odoo的PostgreSQL数据库,执行以下SQL语句导出元数据:
SELECT m.name AS model_display_name, m.model AS model_technical_name, f.name AS field_name, f.ttype AS field_type, CASE WHEN f.name = 'id' THEN 'PK' ELSE '' END AS primary_key, CASE WHEN f.ttype IN ('many2one','one2many','many2many') THEN f.relation ELSE '' END AS foreign_key_relation FROM ir_model m INNER JOIN ir_model_fields f ON m.id = f.model_id ORDER BY m.model;
将查询结果导出为CSV或Excel,即可快速得到包含PK/FK的完整数据字典。
内容的提问来源于stack exchange,提问作者Alec Guerenstein
相关产品推荐
相关产品推荐

