Атрибут fieldsets
Атрибут fieldsets применяется в классе ModelAdmin для
кастомизации отображения формы редактирования модели в административной
панели Django. С помощью этого атрибута можно разбивать поля модели
на логические группы, каждая из которых может иметь свой заголовок,
а также специальные опции отображения, такие как коллапс или классы CSS.
Атрибут представляет собой кортеж кортежей или список списков, где
каждый элемент описывает отдельную секцию.
Синтаксис
class MyModelAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('field1', 'field2')
}),
('Section title', {
'fields': ('field3', 'field4'),
'classes': ('collapse',),
'description': 'Optional description'
}),
)
Пример
Предположим, у нас есть модель Article с полями для заголовка,
содержимого, статуса и дат создания и публикации. Сгруппируем их
в секции для лучшей организации в админке:
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('title', 'content')
}),
('Status and Dates', {
'fields': ('status', 'created_at', 'published_at'),
'classes': ('collapse',),
'description': 'Manage status and publication dates'
}),
)
Результат выполнения кода:
"ArticleAdmin form displayed with two sections: basic fields and status/dates"
Пример
Атрибут fieldsets позволяет гибко настраивать отображение
полей, включая поля отношений и встроенные формы. Рассмотрим
пример с моделью, содержащей внешний ключ и поле для связи
многие-ко-многим:
from django.contrib import admin
from .models import Category, Tag, Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('title', 'content', 'category', 'tags')
}),
('Advanced options', {
'fields': ('is_published', 'published_at'),
'classes': ('collapse', 'wide'),
}),
)
Результат выполнения кода:
"Fields category and tags are displayed as select widgets in the first section"
Смотрите также
-
атрибут
fields,
который определяет простой список полей для отображения -
атрибут
exclude,
который исключает поля из формы редактирования -
атрибут
readonly_fields,
который делает поля доступными только для чтения -
атрибут
list_display,
который определяет поля для отображения в списке записей