Tab completion for Django's manage.py — commands, app labels, options, and migration targets in bash and zsh
Project description
django-completion
Project-aware tab completion for Django's manage.py.
Press Tab to complete commands, app labels, options, and migration targets — in bash and zsh — from your actual Django project.
- GitHub: https://github.com/soldatov-ss/django-completion/
- PyPI: https://pypi.org/project/django-completion/
- Docs: https://soldatov-ss.github.io/django-completion/
- License: MIT
Installation
Install it in the same environment as your Django project:
pip install django-completion
# or
uv add django-completion
Add the app:
INSTALLED_APPS = [
...
"django_completion",
]
Install the shell hook:
python manage.py autocomplete install
Then restart your terminal or reload your shell config:
source ~/.bashrc # bash
source ~/.zshrc # zsh
What Completes
Supported invocation styles:
manage.py <TAB>
./manage.py <TAB>
python manage.py <TAB>
python3 manage.py <TAB>
python ./manage.py <TAB>
uv run python manage.py <TAB>
Completion depth:
- command names after
manage.py - app labels and option flags for management commands
migrateapp labels filtered to apps that have migrations- migration names and
zeroafterpython manage.py migrate app_label - option descriptions in zsh where available
Django can suggest close command names after an error. django-completion prevents many of those errors by completing project-specific commands, app labels, options, and migration targets before you press Enter.
Commands
python manage.py autocomplete status
python manage.py autocomplete status --verbose
python manage.py autocomplete refresh
python manage.py autocomplete uninstall
status --verbose is the best first diagnostic when completion behaves unexpectedly. It reports the cache path, schema version, migration counts, warning count, shell hooks, installed script versions, and package version.
refresh rebuilds .django-completion-cache.json manually. The cache also refreshes automatically after manage.py commands with a 60-second cooldown. To disable auto-refresh:
DJANGO_COMPLETION_AUTO_REFRESH = False
Compatibility
| Area | Supported |
|---|---|
| Python | 3.10+ |
| Django | 4.2+ |
| Shells | bash, zsh |
| OS | Linux and macOS expected |
| Windows | not officially supported; WSL with bash/zsh may work |
| Invocations | manage.py, ./manage.py, python manage.py, python3 manage.py, uv run python manage.py |
| Completion depth | commands, app labels, options, migrate app labels, migration names |
Safety and Privacy
- No telemetry.
- No network calls.
- Tab completion reads only the local cache file.
- Tab completion does not import Django.
- Tab completion does not touch the database.
- The cache is local runtime state in the project root.
- The cache contains command names, app labels, option names/help, migration names, warnings, and timestamps.
- Shell rc edits are marker-delimited and reversible.
autocomplete uninstallremoves managed shell hooks and managed scripts.- The package has no middleware, models, migrations, or request-time behavior.
For teams that prefer strict production settings:
if DEBUG:
INSTALLED_APPS += ["django_completion"]
DEBUG is not always the right environment switch; separate settings modules or a custom environment flag may fit your deployment process better.
Limitations
- bash and zsh only; fish is planned for a later release
- no
django-adminsupport - no official native Windows or PowerShell support
- no global options before command, such as
python manage.py --settings config.settings migrate - no custom alias support, such as
dj migrate - no database-aware applied/unapplied migration filtering
Roadmap
Near-term candidates include more wrapper support, better Docker-oriented examples, fish shell support, and additional command-specific completion rules.
Long term, the goal is to learn from real-world usage and explore whether parts of this approach could inform Django's own management-command completion story.
Documentation
Full documentation is at https://soldatov-ss.github.io/django-completion/.
Development
git clone git@github.com:soldatov-ss/django-completion.git
cd django-completion
uv sync
uv run pytest -q
uv run ruff check .
uv run ty check
django-completion was created in 2026 by Soldatov Serhii.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_completion-0.2.7.tar.gz.
File metadata
- Download URL: django_completion-0.2.7.tar.gz
- Upload date:
- Size: 44.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea67c1633cca5e837a92bcf25477e8fcde3da58fc469145af395abe2b347c48e
|
|
| MD5 |
a4f26d1883fa0b428f6f613d4f9b9d80
|
|
| BLAKE2b-256 |
7cd64ab9abc98e1f4c1ecbde4a8d678d335e88e12dc07f21203c9cbcd5c7e002
|
Provenance
The following attestation bundles were made for django_completion-0.2.7.tar.gz:
Publisher:
publish.yml on soldatov-ss/django-completion
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_completion-0.2.7.tar.gz -
Subject digest:
ea67c1633cca5e837a92bcf25477e8fcde3da58fc469145af395abe2b347c48e - Sigstore transparency entry: 1485549234
- Sigstore integration time:
-
Permalink:
soldatov-ss/django-completion@75d2ea7f60ba82785a523c672184f219bd0767d6 -
Branch / Tag:
refs/tags/v0.2.7 - Owner: https://github.com/soldatov-ss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75d2ea7f60ba82785a523c672184f219bd0767d6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file django_completion-0.2.7-py3-none-any.whl.
File metadata
- Download URL: django_completion-0.2.7-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14c08d076b8980d676093d255ec3b696053270da43143451447e1b48338fadca
|
|
| MD5 |
0669d07f416e195279bdbf219b60603a
|
|
| BLAKE2b-256 |
4069441f09d1bc4c5a0888ab4efb3dacfa5e6f3e754c296074d28317e0dd8a73
|
Provenance
The following attestation bundles were made for django_completion-0.2.7-py3-none-any.whl:
Publisher:
publish.yml on soldatov-ss/django-completion
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_completion-0.2.7-py3-none-any.whl -
Subject digest:
14c08d076b8980d676093d255ec3b696053270da43143451447e1b48338fadca - Sigstore transparency entry: 1485549258
- Sigstore integration time:
-
Permalink:
soldatov-ss/django-completion@75d2ea7f60ba82785a523c672184f219bd0767d6 -
Branch / Tag:
refs/tags/v0.2.7 - Owner: https://github.com/soldatov-ss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75d2ea7f60ba82785a523c672184f219bd0767d6 -
Trigger Event:
push
-
Statement type: