Представление
Эти 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.7CopyableFieldsOption заменяет совпадающие имена в 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.9RelatedFieldsOption выводит атрибут модели или 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:
DateInputTimeInputDateTimeInput/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
}
)
]