Начало работы
Короткий путь от пустого Django-проекта к рабочему Chassis Admin: установка
пакета, порядок приложений, свой AdminSite и один ModelAdmin с options.
Установка
pip install django-chassis
Поставьте 'django_chassis' перед 'django.contrib.admin', чтобы шаблоны
пакета перекрыли стандартный Admin:
INSTALLED_APPS = [
'django_chassis',
'django.contrib.admin',
# ...
]
Если порядок обратный, Django сначала загрузит стандартные шаблоны Admin, и оболочка Chassis не появится.
Chassis site регистрирует стандартных пользователей и группы (без продуктовых ролей), сессии, попытки входа и журнал Admin. Подключите middleware сессий и аудита после аутентификации; см. Пользователи и доступ.
Создайте AdminSite
ChassisAdminSiteMixin должен стоять перед AdminSite в MRO.
from django.contrib.admin import AdminSite
from django.urls import path
from django.utils.translation import gettext_lazy as _
from django_chassis.mixins import ChassisAdminSiteMixin
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
chassis_brand_name = _('My project')
chassis_brand_logo_static_path = 'img/logo.png'
admin_site = CustomAdminSite(name='admin')
Подключите этот экземпляр в urls.py вместо admin.site.urls:
from django.urls import path
from myproject.admin import admin_site
urlpatterns = [path('admin/', admin_site.urls)]
Создайте ModelAdmin
ChassisAdminMixin должен стоять перед ModelAdmin. Возможности собираются в
списке options — frozen dataclass, а не самодельные развилки шаблонов.
from django.contrib.admin import ModelAdmin
from django_chassis.mixins import ChassisAdminMixin
from django_chassis.options import RowActionsOption, SearchOption
from catalog.models import Book
class BookAdmin(ChassisAdminMixin, ModelAdmin):
options = [SearchOption(fields=['title', 'isbn']), RowActionsOption()]
admin_site.register(Book, BookAdmin)
RowActionsOption() без аргументов добавляет кнопку просмотра в последней
колонке changelist. Первая колонка по умолчанию не ссылка
(chassis_link_first_column = False).
Опциональный extra Celery
Файлы import/export пишутся в STORAGES['media']. Фоновая обработка
опциональна:
pip install 'django-chassis[celery]'
Перед включением Celery в продакшене см. Backend import и export.
Запуск WSGI под Gunicorn:
python manage.py run_gunicorn --port=8000 --workers=2
См. Настройки и checks.
Что читать дальше
- Как это работает — кто разбирает options на запросе.
- Admin site — бренд, sidebar, страницы, dashboard.
- ModelAdmin — список
optionsиSettings. - Каталог options — каждое поле каждого option.