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

Декоратор admin.register

Декоратор admin.register применяется к классу ModelAdmin и позволяет зарегистрировать модель в административной панели Django. В качестве аргумента декоратор принимает модель или список моделей, которые нужно зарегистрировать. Декоратор автоматически связывает модель с настройками отображения, которые определены в классе ModelAdmin.

Синтаксис

@admin.register(model) class ModelAdmin(admin.ModelAdmin): pass

Пример

Давайте зарегистрируем модель 'Article' в административной панели с базовыми настройками:

from django.contrib import admin from myapp.models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('id', 'title', 'status', 'created_at') list_filter = ('status', 'created_at') search_fields = ('title', 'content')

В этом примере модель 'Article' регистрируется с кастомным классом настроек 'ArticleAdmin'. В результате в админке будут отображаться колонки с полями 'id', 'title', 'status' и 'created_at', появится фильтр по этим полям и поиск по заголовку и содержимому статей.

Пример

Декоратор может принимать несколько моделей для регистрации с одинаковыми настройками:

from django.contrib import admin from myapp.models import Article, Category, Tag @admin.register(Article, Category, Tag) class BaseAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'created_at') list_filter = ('created_at',) ordering = ('-created_at',)

Все три модели получат одинаковые настройки отображения. Это удобно, когда для нескольких моделей нужны идентичные параметры администрирования.

Пример

Можно также зарегистрировать модель с кастомными методами в классе ModelAdmin:

from django.contrib import admin from myapp.models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('id', 'title', 'status', 'short_content') list_filter = ('status',) search_fields = ('title',) def short_content(self, obj): return obj.content[:50] + '...' if obj.content else '' short_content.short_description = 'Краткое содержание'

В этом примере добавлен кастомный метод short_content, который отображает обрезанное содержание статьи в списке. Свойство short_description задает заголовок колонки.

Пример

Декоратор также позволяет использовать классы вложенных таблиц для связанных моделей:

from django.contrib import admin from myapp.models import Article, Comment class CommentInline(admin.TabularInline): model = Comment extra = 1 @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'created_at') inlines = [CommentInline]

Теперь при редактировании статьи в админке будут отображаться связанные комментарии в виде таблицы. Это позволяет удобно управлять связанными данными в одном интерфейсе.

Смотрите также

  • класс ModelAdmin,
    который настраивает отображение модели в админке
  • класс AdminSite,
    который управляет всей административной панелью
  • метод register,
    который регистрирует модель без использования декоратора
  • класс unregister,
    который отменяет регистрацию модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить