Sidebar
The sidebar is declared on the AdminSite, not discovered from
INSTALLED_APPS. AdminSidebarService resolves model and page references,
applies permissions, and computes the active/expanded state.
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
| Parameter | Type | Default |
|---|---|---|
slug | str | required |
label | localized string | required |
icon_class | Font Awesome class | required |
items | model or page children | required |
icon_color | SidebarIconColor | SLATE |
SidebarModelItemOption
| Parameter | Type | Default |
|---|---|---|
model | 'app_label.model' | required |
label | localized string or None | model verbose name |
icon_class | Font Awesome class | fa-solid fa-table-list |
The model must be registered on the same AdminSite. Users without model
permissions do not see the item.
SidebarPageItemOption
| Parameter | Type | Default |
|---|---|---|
page_slug | str | required |
label | localized string or None | page label |
icon_class | Font Awesome class | '' |
The page must be listed in chassis_page_classes and must be a
PermissionAdminPage. PersonalAdminPage and SuperuserAdminPage cannot
be sidebar children.
SidebarLinkOption
A standalone URL, not a section.
| Parameter | Type | Default |
|---|---|---|
slug | str | required |
label | localized string | required |
icon_class | Font Awesome class | required |
url_name | Django URL name | required |
Behaviour
- Duplicate slugs and unknown model/page references fail validation.
- The stock Django nav sidebar is disabled (
enable_nav_sidebar = False). - Active/expanded state is computed from the current URL.
- With
include_users_moduleandinclude_users_sidebar(defaults), Chassis prepends the Users and groups section. Product roles are not included. See Users and access.