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

Связанные сущности

Добавлено в 1.0.1

Секции связанных сущностей рисуют независимо пагинируемые таблицы на странице объекта, под 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

ПараметрТипПо умолчанию
sectionslist[RelatedEntityOption]обязательный
fieldset_titleлокализованная строкаRelated entities
collapsedboolFalse
pagination_state_ttl_secondsint30 * 60

RelatedEntityOption

ПараметрТипПо умолчанию
slugуникальный slug секцииобязательный
titleлокализованная строкаобязательный
get_items_methodимя методаобязательный
tableTableOptionобязательный
page_sizeint10
collapsedbool или Noneнаследует родителя

Провайдер должен быть @classmethod с @chassis_related_items и вернуть queryset или последовательность. Пагинация независима у каждой секции.

См. также