django-lsp
django-lsp is a Rust language server and command-line checker focused on Django ORM queries. It
uses Ruff's Python parser and an incremental Salsa database to follow Django model relations without
importing or executing the project.
from .models import Blog
Blog.objects.filter(author__team__name__icontains="Django")
Installation
Install the language server from PyPI with uv:
uv tool install django-lsp
pipx install django-lsp and python -m pip install django-lsp are also supported. Confirm the
installed executable is available with:
django-lsp --version
Point an editor's LSP client at the django-lsp command, with no arguments. The server uses standard
input and output for LSP communication. Editors supporting LSP 3.17 pull diagnostics receive
DJ001 warnings for both open documents and unopened files across the workspace.
Run the same repeated-query analysis from a terminal with:
django-lsp check
django-lsp check path/to/views.py
django-lsp check --format github
The checker exits with status 0 when no diagnostics are found, 1 when it reports warnings, and 2
for invalid arguments or analysis failures. Use --format json for structured output or
--format github for native GitHub Actions annotations. Suppress an intentional warning on its
source line with # django-lsp: ignore[DJ001].
Visual Studio Code
Install Django ORM Language Server from the built-in Extensions view in Visual Studio Code or
Cursor. It is published on the
Visual Studio Marketplace
and Open VSX. The extension runs django-lsp
alongside Pylance, Pyright, Ruff, or another general Python language server and bundles the native
server for supported platforms.
Platform-specific VSIX files are also available from the latest GitHub release. See the extension README for configuration and development installation.
Zed
The repository includes a Zed extension that registers django-lsp
alongside a general Python language server. It uses a server already installed on PATH, or
downloads the matching executable from the latest GitHub release. See the extension README for
development installation while its extension-gallery submission is in progress.
Documentation
- Getting started covers installing, building, and connecting an editor.
- Completion examples shows executable examples generated from the real LSP.
- Configuration documents
pyproject.tomloptions. - Testing explains the Rust, protocol, documentation, and Django compatibility test layers.
The website uses CrossDocs, the same documentation framework as Cross-Inertia. Preview the complete
FastAPI and React application locally at http://localhost:8000 with:
cd website
uv sync --locked
bun install --frozen-lockfile
bun run serve
Current scope
- workspace model indexing
- completion inside
filter(...),exclude(...),get(...),select_related(...), andprefetch_related(...) DJ001warnings for missingselect_related()orprefetch_related()across QuerySet loops, comprehensions, collected QuerySets, related managers, and helper calls, available through both the LSP anddjango-lsp check- conservative editor quick fixes that add the missing eager-loading calls to a traced local QuerySet, including a combined fix for multiple relations
- bounded cross-module call summaries, custom QuerySet chains, collection wrappers, typed model parameters, and typed QuerySet-returning functions
- Django admin display-method awareness, including eager loading declared by
get_queryset() - Django 6.1
FETCH_PEERSandRAISEfetch-mode awareness for single-valued relations - forward, reverse, and recursive relation traversal
AUTH_USER_MODELsupport- models re-exported from package
__init__.pymodules - function-local and dotted import resolution
- unsaved editor buffer updates
Development
Building from source requires Rust 1.95 or newer.
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo run --bin render-docs -- --check
cargo test --all-targets
Validate the documentation website separately with:
cd website
uv sync --locked
bun install --frozen-lockfile
bun run check
bun run build
The project intentionally does not provide Django runtime introspection, general Python language features, or exhaustive support for dynamic model-loading patterns.
Release files for django-lsp 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| django_lsp-0.6.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| django_lsp-0.6.1-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| django_lsp-0.6.1-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details |
| django_lsp-0.6.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| django_lsp-0.6.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 15.6 MB
Release files / django_lsp-0.6.1-py3-none-win_amd64.whl
| Download URL | django_lsp-0.6.1-py3-none-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ed5751b44395b3beaaadafe1816cb91b8bcafc3b32a586b24721c8c9856b654b
|
|
BLAKE2b-256 checksum How to use checksums |
1ffac0c466714167367df12d95069e86c8afbb330accb2afd9005bc91541426b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / django_lsp-0.6.1-py3-none-manylinux_2_28_x86_64.whl
| Download URL | django_lsp-0.6.1-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
1365c821a9684fc09eab773d8ccd553926e04cd74b6d87045d5aa0db67ba2b39
|
|
BLAKE2b-256 checksum How to use checksums |
81b096f1793509ab6c9bf3785417645b00b25c1e594f687aba6bef940128a5e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / django_lsp-0.6.1-py3-none-manylinux_2_28_aarch64.whl
| Download URL | django_lsp-0.6.1-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
8d175eceedd9087b567676f3a5ceeb61170cf4174faf2fe909ff6a4e34b5ebc9
|
|
BLAKE2b-256 checksum How to use checksums |
6aec96d5e0f8856385e16a5aa736233089240edff4c6ddbaf34622b2bd6f4937
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / django_lsp-0.6.1-py3-none-macosx_11_0_arm64.whl
| Download URL | django_lsp-0.6.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7dcc18a94324e98aad7c2abac2641dbefed4950afe996d6cd5cecc44fb9f69e4
|
|
BLAKE2b-256 checksum How to use checksums |
2d1bd2d4fcfb0112898c911faf71341a3b67a125d55ff2bcacbe5c81aa6b201a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / django_lsp-0.6.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | django_lsp-0.6.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
fa826e8d086a5619d7b10b83496e0d9c21dd137b4bfd6ddce0a36eb7ed4683cb
|
|
BLAKE2b-256 checksum How to use checksums |
598a9933dfba44922b74353a406472c938e0a797fea9f02f5f374fa99e65e0d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log