A declarative, fully typed chassis for building polished Django Admin applications.
Django-Chassis gives a project a structured AdminSite, composable
ModelAdmin options, custom pages, dashboard contracts, and a complete template
overlay. Domain models and business rules stay in the project; Chassis provides
the reusable Admin application layer around them.
Features
- Declarative configuration — compose the Admin with
ChassisAdminSiteMixin,ChassisAdminMixin, and immutableoptions. - A polished changelist — search, filters, date hierarchy, tabs, badges, pretty JSON, and decimal-amount presentation without ad-hoc template forks.
- Row, list, and object actions — permission-aware buttons, confirmation, and condition methods.
- Related entities and generic tables — independently paginated tables with
TableOption. - Custom pages — permission-aware pages, personal pages, information pages, and timelines.
- Dashboard contracts — metrics, charts, alerts, actions, a four-column grid, and live refresh at
dashboard/live/. - Import/export — JSON/XML in, JSON/XML/CSV/XLSX out, preview/apply, history, optional Celery.
- Users and security — profiles, sessions, login-attempt limits, GeoIP country detection, and an Admin audit journal.
- Fully typed — ships
py.typedand is checked with Pyrefly in strict mode.
Installation
pip install django-chassis
Version 1.0.2 requires Python 3.13 or 3.14 and Django 6.0+.
Put 'django_chassis' before 'django.contrib.admin' so package templates overlay the stock Admin:
INSTALLED_APPS = [
'django_chassis',
'django.contrib.admin',
# ...
]
Background import/export is optional:
pip install 'django-chassis[celery]'
For a production HTTP server, Chassis also provides a Gunicorn management command:
python manage.py run_gunicorn --port=8000 --workers=2
Quick start
Create a Chassis AdminSite, register a model, and mount the site in urls.py:
from django.contrib.admin import AdminSite, ModelAdmin
from django.urls import path
from django.utils.translation import gettext_lazy as _
from django_chassis.mixins import ChassisAdminMixin, ChassisAdminSiteMixin
from django_chassis.options import RowActionsOption, SearchOption
from catalog.models import Book
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
chassis_brand_name = _('My project')
chassis_brand_logo_static_path = 'img/logo.png'
admin_site = CustomAdminSite(name='admin')
class BookAdmin(ChassisAdminMixin, ModelAdmin):
options = [SearchOption(fields=['title', 'isbn']), RowActionsOption()]
admin_site.register(Book, BookAdmin)
urlpatterns = [path('admin/', admin_site.urls)]
ChassisAdminSiteMixinandChassisAdminMixinmust come before their Django classes in the MRO.
Documentation
Read the full guides, architecture notes, option reference, and dashboard contracts at django-chassis.rdd-lab.com.
Testing
uv sync --group dev
uv run pytest
License
Distributed under the MIT License.
Support the project
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_chassis-1.0.2.tar.gz.
File metadata
- Download URL: django_chassis-1.0.2.tar.gz
- Upload date:
- Size: 746.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
861cf518f2c2d630fc5198e03d3b8ed5837fc384a2e769cf6bded635fabb101d
|
|
| MD5 |
12ed38a9c8f2068a68a566e5a7d4c45e
|
|
| BLAKE2b-256 |
f1db70ffb27029cd4debf316500ebcccd53ea02898c61e0a3d2bed9445860f2b
|
Provenance
The following attestation bundles were made for django_chassis-1.0.2.tar.gz:
Publisher:
publish.yml on RDDLab/Django-Chassis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_chassis-1.0.2.tar.gz -
Subject digest:
861cf518f2c2d630fc5198e03d3b8ed5837fc384a2e769cf6bded635fabb101d - Sigstore transparency entry: 2589756902
- Sigstore integration time:
-
Permalink:
RDDLab/Django-Chassis@95a45f1d04a5e36c5b9a9f80fd610132b187b8f0 -
Branch / Tag:
refs/tags/1.0.2 - Owner: https://github.com/RDDLab
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
publish.yml@95a45f1d04a5e36c5b9a9f80fd610132b187b8f0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file django_chassis-1.0.2-py3-none-any.whl.
File metadata
- Download URL: django_chassis-1.0.2-py3-none-any.whl
- Upload date:
- Size: 817.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c387a591ee5feadf0cd1c507235fa488ad62fa2007e353d0890a291e057ab49
|
|
| MD5 |
aaad002a99b817d85c91363abd32e167
|
|
| BLAKE2b-256 |
f6d471604729c3a2d85094727568e8b29d8844786715a86a96a5ad3fcfe11d73
|
Provenance
The following attestation bundles were made for django_chassis-1.0.2-py3-none-any.whl:
Publisher:
publish.yml on RDDLab/Django-Chassis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_chassis-1.0.2-py3-none-any.whl -
Subject digest:
1c387a591ee5feadf0cd1c507235fa488ad62fa2007e353d0890a291e057ab49 - Sigstore transparency entry: 2589756920
- Sigstore integration time:
-
Permalink:
RDDLab/Django-Chassis@95a45f1d04a5e36c5b9a9f80fd610132b187b8f0 -
Branch / Tag:
refs/tags/1.0.2 - Owner: https://github.com/RDDLab
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
publish.yml@95a45f1d04a5e36c5b9a9f80fd610132b187b8f0 -
Trigger Event:
release
-
Statement type: