РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
589 of 818 menu

Класс 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,
    который используется для регистрации модели с настройками
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить