Row и list actions
Row actions стоят в последней колонке changelist. List actions — над таблицей. Оба декларативны и учитывают права. Таблицы полей: каталог options.
Row actions
from django.utils.translation import gettext_lazy as _
from django_chassis.enums import ButtonColor, RowActionDisplay, RowActionType
from django_chassis.options import RowActionOption, RowActionsOption
RowActionsOption(
actions=[
RowActionOption(
action_type=RowActionType.VIEW,
label=_('Open'),
color=ButtonColor.PRIMARY,
icon_class='fa-solid fa-arrow-right',
display=RowActionDisplay.ICON,
),
RowActionOption(
action_type=RowActionType.CHANGE,
label=_('Edit'),
color=ButtonColor.SECONDARY,
icon_class='fa-solid fa-pen',
permission='change',
),
RowActionOption(
action_type=RowActionType.DELETE,
label=_('Delete'),
color=ButtonColor.DANGER,
icon_class='fa-solid fa-trash',
permission='delete',
),
RowActionOption(
action_type=RowActionType.HISTORY,
label=_('History'),
color=ButtonColor.SECONDARY,
icon_class='fa-solid fa-clock-rotate-left',
),
]
)
RowActionsOption() без аргументов добавляет одну кнопку просмотра.
RowActionOption
| Параметр | Тип | По умолчанию |
|---|---|---|
action_type | RowActionType | обязательный |
label | локализованная строка | обязательный |
color | ButtonColor | обязательный |
icon_class | класс Font Awesome | обязательный |
display | ICON или BUTTON | ICON |
permission | codename или None | выводится из типа, когда возможно |
Значения RowActionType: view, change, delete, history.
Скрытые действия остаются скрытыми. Нет права — кнопка скрыта, а не показана disabled.
List actions
Ссылки над списком на именованные URL.
from django_chassis.options import ListActionOption, ListActionsOption
ListActionsOption(
actions=[
ListActionOption(
url_name='admin:catalog_book_changelist',
label='All books',
color=ButtonColor.PRIMARY,
icon_class='fa-solid fa-list',
permission='view',
condition_method='can_show_all_books',
)
]
)
| Параметр | Тип | По умолчанию |
|---|---|---|
url_name | имя URL Django | обязательный |
label | локализованная строка | обязательный |
color | ButtonColor | PRIMARY |
icon_class | класс Font Awesome | '' |
permission | codename или None | None |
condition_method | имя метода на ModelAdmin | None |
condition_method должен быть @classmethod вида
(cls, request) -> bool. Если вернул False, действие не показывается.
Объектные действия
Методы на один объект — через @object_action и ObjectActionsOption. См.
Объектные действия.