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

Представление

Добавлено в 1.0.1

Эти options меняют вид полей на changelist и форме изменения. Маршруты они не добавляют. Mixin генерирует display-методы в __init__ и переписывает совпадающие имена в list_display.

Полные таблицы полей: каталог options.

Badge-поля​

from django_chassis.enums import ButtonColor
from django_chassis.options import BadgeFieldsOption

BadgeFieldsOption(fields=['status'], colors={'status': {'active': ButtonColor.SUCCESS, 'draft': ButtonColor.SECONDARY}})
ПараметрТипПо умолчанию
fieldsимена полей для badgeобязательный
colorsполе → значение → ButtonColorпустой mapping

Копируемые поля​

Добавлено в 1.0.7

CopyableFieldsOption заменяет совпадающие имена в list_display, fields и fieldsets на read-only input с присоединённой кнопкой копирования Font Awesome. Сгенерированный display сохраняет подпись и сортировку исходного поля.

from django_chassis.options import CopyableFieldsOption

CopyableFieldsOption(fields=['address', 'external_id'])

Имена полей должны быть уникальны. Chassis экранирует выводимое значение и использует fallback для Clipboard API в небезопасном контексте.

Pretty JSON​

Заменяет указанные JSON-поля на read-only вывод с подсветкой синтаксиса (Pygments).

from django_chassis.options import PrettyJsonOption

PrettyJsonOption(fields=['payload'])

Decimal-суммы​

Изменено в 1.0.7

Показывает целочисленные поля в минорных единицах через два метода на модели: _get_fraction_number и convert_amount_to_decimal. Если любого нет, option игнорируется. Перечисленные имена должны быть IntegerField, иначе ImproperlyConfigured. Повтор имён — ValueError. Используйте, когда деньги хранятся как integer.

from django_chassis.options import DecimalAmountOption

DecimalAmountOption(fields=['amount'])

Если модель также реализует convert_amount_field_to_decimal(field_name=..., amount=...), Chassis предпочитает этот метод. Это позволяет разным полям суммы использовать свой контекст валюты или актива, сохраняя convert_amount_to_decimal(amount=...) как fallback-контракт.

Связанные поля​

Добавлено в 1.0.8 Изменено в 1.0.9

RelatedFieldsOption выводит атрибут модели или Django-путь по связям как read-only колонку changelist и/или поле change form. Каждый вложенный RelatedFieldOption задаёт строковый путь, локализованную подпись и необязательный локализованный help-текст. Help-текст открывается через маленькую Font Awesome-иконку вопроса в кружке после подписи. Tooltip открывается сразу по hover всей подписи и доступен с клавиатуры через иконку.

from django.utils.translation import gettext_lazy as _

from django_chassis.options import RelatedFieldOption, RelatedFieldsOption

RelatedFieldsOption(fields=[
RelatedFieldOption(
field='account__owner__email',
label=_('Email владельца'),
help_text=_('Email владельца, связанного через аккаунт.'),
empty_value_display=_('Не назначено')
),
])

Тот же точный путь включается в list_display и/или fieldsets. Chassis проверяет его, добавляет в readonly_fields и автоматически применяет select_related либо prefetch_related. Для обратных коллекций выводятся все значения, а не произвольно первая строка.

empty_value_display заменяет placeholder ModelAdmin только для этого поля. Если тот же путь сделан копируемым, заданные подпись и tooltip сохраняются.

Read-only деревья​

Добавлено в 1.0.9

Используйте AdminTreeDTO, AdminTreeNodeDTO и render_admin_tree() для экранированных read-only иерархий в display-методах ModelAdmin и на своих страницах. Узел может содержать дочерние узлы, Font Awesome icon_class и небольшой badge.

from django_chassis.dto import AdminTreeDTO, AdminTreeNodeDTO
from django_chassis.renderers import render_admin_tree

tree = AdminTreeDTO(
label=_('Назначенные разрешения'),
empty_text=_('Разрешений нет.'),
nodes=[
AdminTreeNodeDTO(
label=_('Каталог'),
icon_class='fa-solid fa-layer-group',
badge='2',
children=[AdminTreeNodeDTO(label=_('Просмотр книг'))]
)
]
)
html = render_admin_tree(tree=tree)

Виджеты даты и времени​

ChassisAdminMixin ставит masked-виджеты для полей date, time и datetime:

  • DateInput
  • TimeInput
  • DateTimeInput / SplitDateTime

Отдельный option не нужен. Виджеты идут вместе с миксином.

Alert для описания fieldset​

Добавлено в 1.0.7

Задайте стандартный Django description и необязательный типизированный стиль alert у fieldset. Chassis экранирует описание и выводит его как alert; стиль по умолчанию — DashboardAlertStyle.INFO.

from django_chassis.enums import DashboardAlertStyle

fieldsets = [
(
'Опасная зона',
{
'fields': ['status'],
'description': 'Изменение поля применяется немедленно.',
'description_alert_style': DashboardAlertStyle.WARNING
}
)
]

См. также​