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

Row и list actions

Добавлено в 1.0.1

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_typeRowActionTypeобязательный
labelлокализованная строкаобязательный
colorButtonColorобязательный
icon_classкласс Font Awesomeобязательный
displayICON или BUTTONICON
permissioncodename или 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локализованная строкаобязательный
colorButtonColorPRIMARY
icon_classкласс Font Awesome''
permissioncodename или NoneNone
condition_methodимя метода на ModelAdminNone

condition_method должен быть @classmethod вида (cls, request) -> bool. Если вернул False, действие не показывается.

Объектные действия

Методы на один объект — через @object_action и ObjectActionsOption. См. Объектные действия.

См. также