Django Orm Lens

by FROWNINGdev

1 285 downloads Not rated yet MIT

About

Static Django schema analysis for AI agents — 10 read-only tools (models, relations, ER diagrams, migration DAG, N+1 scan) with no database and no Django boot.

Details

License
MIT

Explore

- 🔎 Hover cards — over any ForeignKey('app.Model') or ManyToManyField(...), with a one-click jump link
- 🧭 CodeLens — above every class Model line: field count, relation count, and an Open ER diagram action
- 🎨 Named themes — auto / default / dark / forest / neutral for the diagram webview
- Django developers joining a codebase with 10+ apps and getting lost in models.py sprawl
- Contract / freelance engineers who need to grasp an unfamiliar Django project in the first hour, not the first week

VS Code / Cursor / Windsurf / any Code fork:

code --install-extension frowningdev.django-orm-lens

Or search Django ORM Lens in the Extensions view.

Terminal & AI coding agents:

pip install django-orm-lens              # CLI only
pip install "django-orm-lens[mcp]"       # + MCP server for AI agents

Requires Python 3.9+. Zero runtime dependencies for the CLI.

<br/>

No DJANGO_SETTINGS_MODULE. No runserver. Parses models.py statically. Works with a broken venv, a missing dependency, or on someone else's laptop.

</td>
<td width="50%" valign="top">

The defaults are opinionated and sensible. If you need to tweak:

// .vscode/settings.json
{
  "djangoOrmLens.excludeGlobs": [
    "/migrations/",
    "/node_modules/",
    "/venv/",
    "/.venv/",
    "/env/"
  ],
  "djangoOrmLens.autoRefresh": true
}

| Setting | Type | Default | What it does |
|---|---|---|---|
| djangoOrmLens.excludeGlobs | string[] | See above | Glob patterns to skip when scanning |
| djangoOrmLens.autoRefresh | boolean | true | Rescan on models.py changes |

<br/>

See your entire Django schema — in your editor, in your terminal, and from your AI agent.

Every app. Every model. Every field. Every relationship. Grouped, navigable, and one keystroke away from a live ER diagram.

<br/>

Install from Marketplace
PyPI
MCP Registry
Glama
Star on GitHub
Sponsor

<br/>

Version
Installs
Rating
PyPI version
Python
License MIT
CI

</div>

---

⚡ Install

VS Code / Cursor / Windsurf / any Code fork:

code --install-extension frowningdev.django-orm-lens

Or search Django ORM Lens in the Extensions view.

Terminal & AI coding agents:

pip install django-orm-lens              # CLI only
pip install "django-orm-lens[mcp]"       # + MCP server for AI agents

Requires Python 3.9+. Zero runtime dependencies for the CLI.

<br/>

🎯 The problem

You open a Django project. It has 20 apps. You need to answer a simple question:

> _"Which app owns the Order model, and how is it connected to User?"_

Today, that means: Ctrl+P, "models", scroll through 30 hits, open five files, Ctrl+F for class Order, read through 400 lines of ForeignKey('otherapp.Something') strings, try to remember what you learned two files ago.

Half a day gone. Every time. On every project.

<br/>

✨ With Django ORM Lens

<table>
<tr>
<td width="50%" valign="top">

📚 A tree of everything

Every app → every model → every field → every Meta option. Grouped by application, sorted alphabetically, expandable.

Icons distinguish CharField from ForeignKey from ManyToManyField at a glance.

</td>
<td width="50%" valign="top">

🕸️ A live ER diagram

One command opens a Mermaid entity-relationship diagram of your entire schema. Watch it redraw as you edit. Export to SVG.

ForeignKey, OneToOneField, and ManyToManyField become proper cardinality arrows.

</td>
</tr>
<tr>
<td width="50%" valign="top">

🔎 Hover for relations

Hover over ForeignKey('app.Model') in any Python file → a card pops up with the target model's fields, relations, and a "Jump to" link. No Ctrl+F, no file dialog.

</td>
<td width="50%" valign="top">

🧭 Jump-to-definition

Click any field in the tree → cursor lands on the exact line. Filter the tree by app or model name. Split models/ packages are fully supported.

</td>
</tr>
<tr>
<td width="50%" valign="top">

⚡ Zero configuration

No DJANGO_SETTINGS_MODULE. No runserver. Parses models.py statically. Works with a broken venv, a missing dependency, or on someone else's laptop.

</td>
<td width="50%" valign="top">

🎨 Native VS Code UI

Dark theme. Light theme. Your theme. Follows your icon theme, your font, your key bindings. Nothing garish, nothing branded.

</td>
</tr>
</table>

<br/>

📸 What it looks like

<div align="center">
Django ORM Lens sidebar showing an app's models with fields, relations, and Meta options
</div>

Also included in the extension:

- 🕸️ Live ER diagram — Mermaid cardinality arrows, edge labels (CASCADE, through Model, as related_name), theme-aware, one-click SVG export
- 🔎 Hover cards — over any ForeignKey('app.Model') or ManyToManyField(...), with a one-click jump link
- 🧭 CodeLens — above every class Model line: field count, relation count, and an Open ER diagram action
- 🎨 Named themes — auto / default / dark / forest / neutral for the diagram webview

<br/>

🤖 For terminals and AI coding agents

The same parser that powers the VS Code extension ships as a standalone Python package — with an optional MCP (Model Context Protocol) server so any MCP-compatible AI agent can navigate your Django schema without importing Django or booting your app.

CLI

django-orm-lens scan -f json          # every app, every model, every field
django-orm-lens describe blog.Post    # one model in Markdown
django-orm-lens hover blog.Post       # compact hover card
django-orm-lens list | fzf            # flat app.Model — pipes anywhere
django-orm-lens er > schema.mmd       # Mermaid ER diagram

Every command accepts --path <dir> and --exclude <glob>.

MCP server

Register it once with your agent and it exposes five read-only tools:

| Tool | Purpose |
| --- | --- |
| list_apps | Every Django app in the workspace with model counts |
| list_models | Flat app.Model list, optional app filter |
| describe_model | Full field / relation / Meta detail for one model |
| find_relations | Inbound + outbound relations for one model |
| er_diagram | Mermaid erDiagram for the whole workspace |

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.