Related entities
Related-entity sections render independently paginated tables on the object
page, below the Django fieldsets (after_field_sets in
admin/chassis/change_form.html). Each section has a provider method
marked with @chassis_related_items. Field tables:
Options catalog.
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
| Parameter | Type | Default |
|---|---|---|
sections | list[RelatedEntityOption] | required |
fieldset_title | localized string | Related entities |
collapsed | bool | False |
pagination_state_ttl_seconds | int | 30 * 60 |
RelatedEntityOption
| Parameter | Type | Default |
|---|---|---|
slug | unique section slug | required |
title | localized string | required |
get_items_method | method name | required |
table | TableOption | required |
page_size | int | 10 |
collapsed | bool or None | inherit parent |
The provider must be a @classmethod decorated with
@chassis_related_items and return a queryset or a sequence. Pagination is
independent per section.