Sidebar
Sidebar объявляется на AdminSite, а не собирается из INSTALLED_APPS.
AdminSidebarService разрешает ссылки на модели и страницы, применяет права
и считает активное/развёрнутое состояние.
Options
from django.utils.translation import gettext_lazy as _
from django_chassis.enums import SidebarIconColor
from django_chassis.options import (
SidebarLinkOption,
SidebarModelItemOption,
SidebarPageItemOption,
SidebarSectionOption,
)
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
sidebar_items = (
SidebarLinkOption(slug='docs', label=_('Documentation'), icon_class='fa-solid fa-book', url_name='admin:index'),
SidebarSectionOption(
slug='catalog',
label=_('Catalog'),
icon_class='fa-solid fa-boxes-stacked',
icon_color=SidebarIconColor.SLATE,
items=[SidebarModelItemOption(model='catalog.book'), SidebarPageItemOption(page_slug='inventory')],
),
)
SidebarSectionOption
| Параметр | Тип | По умолчанию |
|---|---|---|
slug | str | обязательный |
label | локализованная строка | обязательный |
icon_class | класс Font Awesome | обязательный |
items | дочерние model или page | обязательный |
icon_color | SidebarIconColor | SLATE |
SidebarModelItemOption
| Параметр | Тип | По умолчанию |
|---|---|---|
model | 'app_label.model' | обязательный |
label | локализованная строка или None | verbose name модели |
icon_class | класс Font Awesome | fa-solid fa-table-list |
Модель должна быть зарегистрирована на том же AdminSite. Пользователи без
прав на модель пункт не видят.
SidebarPageItemOption
| Параметр | Тип | По умолчанию |
|---|---|---|
page_slug | str | обязательный |
label | локализованная строка или None | подпись страницы |
icon_class | класс Font Awesome | '' |
Страница должна быть в chassis_page_classes и быть
PermissionAdminPage. PersonalAdminPage и SuperuserAdminPage нельзя
класть в sidebar как дочерние пункты.
SidebarLinkOption
Отдельный URL, не секция.
| Параметр | Тип | По умолчанию |
|---|---|---|
slug | str | обязательный |
label | локализованная строка | обязательный |
icon_class | класс Font Awesome | обязательный |
url_name | имя URL Django | обязательный |
Поведение
- Дубли slug и неизвестные ссылки на модель/страницу не проходят валидацию.
- Стандартный nav sidebar Django выключен (
enable_nav_sidebar = False). - Активное/развёрнутое состояние считается по текущему URL.
- При
include_users_moduleиinclude_users_sidebar(по умолчанию) Chassis вставляет раздел «Пользователи и группы». Продуктовые роли туда не входят. См. Пользователи и доступ.