Skip to main content
Glama
FROWNINGdev

django-orm-lens

Django ORM Lens

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.

Install from Marketplace PyPI MCP Registry Star on GitHub Sponsor

Version Installs Rating PyPI version Python License MIT CI


⚑ 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.

Related MCP server: django-mcp-inspector

🎯 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.

✨ With Django ORM Lens

πŸ“š 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.

πŸ•ΈοΈ 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.

πŸ”Ž 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.

🧭 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.

⚑ 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.

🎨 Native VS Code UI

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

πŸ“Έ What it looks like

πŸ€– 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

# Start it directly
django-orm-lens-mcp

# Or via the CLI subcommand
django-orm-lens mcp

Set DJANGO_ORM_LENS_ROOT=/abs/path/to/project to point it anywhere.

πŸ”Œ Integrations

Client

How to enable

Status

VS Code

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

βœ…

Cursor

same VSIX + optional MCP entry in ~/.cursor/mcp.json

βœ…

Windsurf / VSCodium / any Code fork

install the VSIX from the Marketplace or GitHub Releases

βœ…

Aider

add django-orm-lens-mcp to your mcp.json

βœ… (via MCP)

Continue.dev

register the MCP server in ~/.continue/config.json

βœ… (via MCP)

Zed

register the MCP server in Zed settings

βœ… (via MCP)

Any MCP-compatible client

point command at django-orm-lens-mcp, set DJANGO_ORM_LENS_ROOT

βœ…

Discoverable via MCP Registry

official Model Context Protocol server directory

βœ…

Plain terminal / CI

pip install django-orm-lens && django-orm-lens scan

βœ…

Example: Cursor / any MCP client

{
  "mcpServers": {
    "django-orm-lens": {
      "command": "django-orm-lens-mcp",
      "env": { "DJANGO_ORM_LENS_ROOT": "/abs/path/to/your/project" }
    }
  }
}

πŸš€ Get started (30 seconds)

In VS Code:

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

  2. Open a folder with a manage.py or models.py

  3. Click the Django ORM Lens icon in the activity bar

  4. Expand apps β†’ models β†’ fields

  5. Click the type-hierarchy icon at the top of the panel β†’ ER diagram opens beside your code

In a terminal:

pip install django-orm-lens
cd my-django-project
django-orm-lens scan -f table

As an AI agent tool:

pip install "django-orm-lens[mcp]"

…then register django-orm-lens-mcp in your agent's MCP config (see the Integrations table above).

No settings screen. No sign-in. No telemetry.

πŸ€” How is this different?

Django ORM Lens

django-extensions graph_models

django-schema-graph

Django Admin

Works without a bootable Django project

βœ…

❌

❌

❌

Zero-install (no graphviz, no server)

βœ…

❌

❌

❌

Sidebar tree inside the editor

βœ…

❌

❌

❌

Live ER diagram

βœ…

βœ…

βœ…

❌

Hover cards on ForeignKey

βœ…

❌

❌

❌

Split models/ package support

βœ…

⚠️

⚠️

βœ…

CLI for terminal / CI

βœ…

⚠️

❌

❌

MCP server for AI agents

βœ…

❌

❌

❌

Free & open-source

βœ…

βœ…

βœ…

βœ…

βš™οΈ Configuration

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

🧭 Commands

Open the command palette (Ctrl+Shift+P / Cmd+Shift+P) and type "Django ORM Lens":

Command

What it does

Django ORM Lens: Refresh

Force-rescan the workspace

Django ORM Lens: Show ER Diagram

Open the Mermaid ER diagram side-by-side

Django ORM Lens: Filter Models

Filter the tree by app / model / field name

Django ORM Lens: Clear Filter

Restore the full tree

Django ORM Lens: Jump to Model

Programmatic β€” triggered by tree clicks and hover cards

πŸ—ΊοΈ Roadmap

Shipped

  • Sidebar tree grouped by app

  • Live Mermaid ER diagram

  • Hover cards over ForeignKey('app.Model')

  • Filter tree by name

  • Split models/ package support

  • Export ER diagram as SVG

  • Python CLI + MCP server for terminals and AI agents

  • Welcome view for empty workspaces

  • Path-safe jump-to-definition and sanitized hover markdown

Next (v0.3.0)

  • CodeLens above each class Model: N relations Β· N fields Β· Open ERD

  • Edge labels on the diagram: CASCADE, SET_NULL, PROTECT, related_name

  • Zoom + minimap + auto-layout inside the webview

  • Named color themes (default / ocean / sunset / forest / dark)

  • App / model toggle checkboxes to declutter huge schemas

Later

  • Migration dependency graph

  • ORM query autocomplete inside .filter()/.exclude()/.annotate()

  • Third-party field support (django-mptt, django-taggit, django-model-utils)

  • JetBrains / PyCharm plugin (if there is demand)

Vote by πŸ‘-ing the corresponding issue.

❓ FAQ

πŸ†˜ Support

πŸ“œ License

MIT Β© FROWNINGdev

Made for developers who care about their codebase.

Marketplace Β· PyPI Β· GitHub Β· Issues Β· Discussions Β· Sponsor

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

–Maintainers
–Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FROWNINGdev/django-orm-lens'

If you have feedback or need assistance with the MCP directory API, please join our Discord server