Класс ModelAdmin
Класс ModelAdmin применяется для настройки административного
интерфейса для конкретной модели. Он позволяет определить,
как модель будет отображаться в списке объектов, какие поля
будут доступны для редактирования, как будет выглядеть форма
добавления и изменения, а также настроить фильтрацию, поиск
и дополнительные действия. Класс наследуется от
django.contrib.admin.ModelAdmin и регистрируется
в административном сайте с помощью метода register.
Синтаксис
from django.contrib import admin
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
# Настройки админки
list_display = ('field1', 'field2')
list_filter = ('field1',)
search_fields = ('field2',)
admin.site.register(MyModel, MyModelAdmin)
Пример
Настроим отображение модели Article в административном
интерфейсе. Определим какие поля будут отображаться в списке
статей, добавим фильтрацию по статусу и поиск по заголовку:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'status', 'created_at')
list_filter = ('status',)
search_fields = ('title',)
admin.site.register(Article, ArticleAdmin)
Результат выполнения кода:
"Административный интерфейс для Article настроен"
Пример
Используем атрибут list_editable для того, чтобы разрешить
редактирование некоторых полей прямо из списка объектов.
Также настроим количество записей на странице с помощью
list_per_page:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'status', 'views')
list_editable = ('status', 'views')
list_per_page = 25
admin.site.register(Article, ArticleAdmin)
Результат выполнения кода:
"Теперь статус и количество просмотров можно редактировать прямо из списка"
Пример
Используем атрибут fieldsets для группировки полей
в форме редактирования. Разделим поля на основные и
дополнительные:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
fieldsets = (
('Основные данные', {
'fields': ('title', 'content', 'status')
}),
('Дополнительно', {
'fields': ('views', 'created_at'),
'classes': ('collapse',)
}),
)
admin.site.register(Article, ArticleAdmin)
Результат выполнения кода:
"Форма редактирования разделена на две группы полей"
Смотрите также
-
атрибут
list_display,
который определяет поля, отображаемые в списке объектов -
атрибут
list_filter,
который добавляет фильтры в боковую панель -
атрибут
search_fields,
который настраивает поля для поиска -
декоратор
admin.register,
который используется для регистрации модели с настройками