Связанные сущности
Секции связанных сущностей рисуют независимо пагинируемые таблицы на
странице объекта, под fieldsets Django (after_field_sets в
admin/chassis/change_form.html). У каждой секции есть метод-провайдер с
@chassis_related_items. Таблицы полей:
каталог options.
from django.http import HttpRequest
from django.utils.translation import gettext_lazy as _
from django_chassis.decorators import chassis_related_items
from django_chassis.options import RelatedEntitiesOption, RelatedEntityOption, TableColumnOption, TableOption
class AuthorAdmin(ChassisAdminMixin, ModelAdmin):
options = [
RelatedEntitiesOption(
sections=[
RelatedEntityOption(
slug='books',
title=_('Books'),
get_items_method='get_books',
page_size=10,
table=TableOption(
columns=[
TableColumnOption(field='title', label=_('Title')),
TableColumnOption(field='isbn', label=_('ISBN')),
]
),
)
]
)
]
@classmethod
@chassis_related_items
def get_books(cls, request: HttpRequest, obj: Author):
return obj.books.all()
RelatedEntitiesOption
| Параметр | Тип | По умолчанию |
|---|---|---|
sections | list[RelatedEntityOption] | обязательный |
fieldset_title | локализованная строка | Related entities |
collapsed | bool | False |
pagination_state_ttl_seconds | int | 30 * 60 |
RelatedEntityOption
| Параметр | Тип | По умолчанию |
|---|---|---|
slug | уникальный slug секции | обязательный |
title | локализованная строка | обязательный |
get_items_method | имя метода | обязательный |
table | TableOption | обязательный |
page_size | int | 10 |
collapsed | bool или None | наследует родителя |
Провайдер должен быть @classmethod с @chassis_related_items и вернуть
queryset или последовательность. Пагинация независима у каждой секции.