Skip to main content

Related entities

Added in 1.0.1

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

ParameterTypeDefault
sectionslist[RelatedEntityOption]required
fieldset_titlelocalized stringRelated entities
collapsedboolFalse
pagination_state_ttl_secondsint30 * 60

RelatedEntityOption

ParameterTypeDefault
slugunique section slugrequired
titlelocalized stringrequired
get_items_methodmethod namerequired
tableTableOptionrequired
page_sizeint10
collapsedbool or Noneinherit parent

The provider must be a @classmethod decorated with @chassis_related_items and return a queryset or a sequence. Pagination is independent per section.

See also