Django ORM Lens 是一款用于 Django ORM 的静态分析工具,无需数据库、无需运行 runserver、无需可用的虚拟环境,即可解析 Django 项目的模型图。它提供三种使用界面:VS Code 扩展、命令行工具(CLI)和 MCP 服务器,三者共享同一个解析核心。
主要能力
- ER 图生成:通过 Mermaid 实体关系图展示整个数据库模式,支持外键、一对一、多对多关系的基数箭头,可导出为 SVG。
- N+1 查询检测:静态分析循环中未使用 select_related 或 prefetch_related 的外键/多对多访问。
- 迁移风险检查:标记 migrations/*.py 中的危险操作,支持 16 条 CLI 侧迁移风险规则。
- 模式漂移检测:无需启动 Django 即可检查模型声明与迁移文件是否一致,仅当字段声明但未迁移时构建失败。
- 内联诊断与快速修复:18 条编辑器侧检查规则(DOL001–DOL041),采用 Ruff 风格代码和 Clippy 风格适用性,支持按规则覆盖严重级别。
- 工厂生成器:右键模型即可生成 factory_boy 的 DjangoModelFactory 脚手架,根据字段类型使用 Faker 提供者。
- 时间旅行模式差异:选择两个提交,生成类型化的差异,支持重命名检测(Levenshtein + 字段形状 Jaccard)。
- 影响分析:右键字段或模型,扫描整个工作区,按 Django 层(模型、序列化器、表单、管理、视图、URL、模板、测试、迁移)分组,并标注置信度。
- 交互式查询构建器:右键字段或模型,选择模板,在光标处插入代码片段,自动追加 select_related、prefetch_related 等。
- MCP 服务器:为 AI 编码代理提供 13 个只读工具,支持工作区解析和沙箱。
使用方式
- VS Code / Cursor / Windsurf:从 VS Code Marketplace 安装扩展。
- VSCodium / code-server / Gitpod:从 Open VSX 安装。
- 终端与 AI 编码代理:通过 pipx 或 uvx 运行 CLI,需要 Python 3.9+,CLI 零运行时依赖。
- Docker:支持多架构(amd64 + arm64),无需主机安装 Python,适合 CI 和一次性审计。
- MCP 设置:通过一个 JSON 块配置,将 DJANGO_ORM_LENS_ROOT 指向 Django 项目的绝对路径。
适用场景
- 加入拥有 10 个以上应用、models.py 分散的 Django 代码库的开发者。
- 合同/自由职业工程师需要在第一小时内理解不熟悉的 Django 项目。
- 团队入职新员工,希望无需搭建文档基础设施即可获得模式视图。
- AI 代理高级用户(Cursor / Aider / Zed / Continue 等)需要代理准确回答模式问题,而无需数据库凭据或启动 Django。
- CI 流水线验证模式形状(例如是否意外破坏了 related_name),无需导入项目。
- 独立开发者面对损坏的虚拟环境或他人的笔记本电脑,无需 runserver 或 manage.py migrate。
限制
- 该工具专注于静态分析,不进行实时请求分析。实时请求分析建议使用 django-debug-toolbar,历史请求分析使用 django-silk,测试套件中的查询计数断言使用 django-perf-rec,生产环境 APM 使用 Scout / Sentry。
- 部分功能(如 impact、blast-radius、drift、stats-sql)需要 py-1.7.0 或更高版本。
- 迁移风险检查目前有 15 条规则(截至 v0.6.0)。
- 该工具免费且采用 MIT 许可证,无付费层级,无席位限制,无账户,无遥测。