Skip to content

dj-admin-tui

A Textual terminal UI that drives the Django admin from your terminal: browse, search, filter, sort, create, edit, delete, and run admin actions — honoring the same permissions and audit log as the web admin, because it reuses Django's own admin internals rather than reimplementing them.

It works with zero configuration: any project that has ModelAdmins gets a working terminal admin with no extra code. Write a tui.py only when you want TUI-specific behaviour.

dj-admin-tui — the changelist screen: a sortable books table, a filter sidebar, pagination, and a keymap footer

Trust model — read first

The TUI runs in-process as a manage.py subcommand. There is no network port, no token, no remote API.

The --user flag is not access control

Whoever can run manage.py on the host already has full database access. The --user flag scopes which records the operator sees and attributes audit entries to that account — it is not an access-control boundary. Access control is the host's responsibility (Unix permissions, SSH, etc.).

Quick start

pip install dj-admin-tui
# settings.py
INSTALLED_APPS += ["dj_admin_tui"]
python manage.py admin_tui                # run as the lone superuser
python manage.py admin_tui --user alice   # run as alice (must be is_staff)

You land on an index of every app and model the web admin would show that user. Arrows + Enter (or the mouse) to drill in, q to quit, ? for help.

Where to next

Topic What it covers
Installation Requirements, install, first launch, trust model
Usage Keymap, mouse map, search / sort / filter, the screens
Configuration The ADMIN_TUI settings dict
CLI The manage.py admin_tui command, flags, exit codes
Theming Bundled themes, custom themes, .tcss overrides
Extending TuiAdmin overlays, hooks, custom widgets & screens
API reference The public Python API and stability policy
Architecture How it fits together; the reuse-the-admin design

Supported versions

  • Python: 3.12, 3.13, 3.14
  • Django: 4.2 LTS, 5.2 LTS, 6.0
  • Textual: >=8.2,<9