Перейти к основному содержимому

Sidebar

Добавлено в 1.0.1

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

ПараметрТипПо умолчанию
slugstrобязательный
labelлокализованная строкаобязательный
icon_classкласс Font Awesomeобязательный
itemsдочерние model или pageобязательный
icon_colorSidebarIconColorSLATE

SidebarModelItemOption

ПараметрТипПо умолчанию
model'app_label.model'обязательный
labelлокализованная строка или Noneverbose name модели
icon_classкласс Font Awesomefa-solid fa-table-list

Модель должна быть зарегистрирована на том же AdminSite. Пользователи без прав на модель пункт не видят.

SidebarPageItemOption

ПараметрТипПо умолчанию
page_slugstrобязательный
labelлокализованная строка или Noneподпись страницы
icon_classкласс Font Awesome''

Страница должна быть в chassis_page_classes и быть PermissionAdminPage. PersonalAdminPage и SuperuserAdminPage нельзя класть в sidebar как дочерние пункты.

SidebarLinkOption

Отдельный URL, не секция.

ПараметрТипПо умолчанию
slugstrобязательный
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 вставляет раздел «Пользователи и группы». Продуктовые роли туда не входят. См. Пользователи и доступ.

См. также