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

Метод register

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

Синтаксис

admin_site.register(model, admin_class=None)

Параметры

Метод register принимает два параметра:

  • model - обязательный параметр, модель которую необходимо зарегистрировать в административной панели
  • admin_class - опциональный параметр, класс ModelAdmin с настройками отображения и управления моделью

Пример

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

from django.contrib import admin from myapp.models import Article # Создание экземпляра административного сайта admin_site = admin.AdminSite(name='myadmin') # Регистрация модели со стандартным интерфейсом admin_site.register(Article)

После выполнения кода модель Article появится в административной панели с базовым интерфейсом управления.

Пример

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

from django.contrib import admin from myapp.models import Article # Создание кастомного класса ModelAdmin class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'created_at') list_filter = ('status',) search_fields = ('title', 'content') # Создание экземпляра административного сайта admin_site = admin.AdminSite(name='myadmin') # Регистрация модели с кастомным интерфейсом admin_site.register(Article, ArticleAdmin)

Результат выполнения кода:

"Model Article registered with custom admin interface"

Пример

Давайте зарегистрируем несколько моделей в одном экземпляре AdminSite с различными конфигурациями:

from django.contrib import admin from myapp.models import Article, Category, User # Создание кастомных классов ModelAdmin class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'status') list_filter = ('category', 'status') search_fields = ('title',) class CategoryAdmin(admin.ModelAdmin): list_display = ('name', 'slug') prepopulated_fields = {'slug': ('name',)} # Создание экземпляра административного сайта admin_site = admin.AdminSite(name='myadmin') # Регистрация моделей с кастомными интерфейсами admin_site.register(Article, ArticleAdmin) admin_site.register(Category, CategoryAdmin) admin_site.register(User)

После выполнения кода все три модели будут зарегистрированы в административной панели, при этом модели Article и Category будут использовать кастомные интерфейсы, а модель User - стандартный.

Пример

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

from django.contrib import admin from myapp.models import Article # Создание собственного подкласса AdminSite class CustomAdminSite(admin.AdminSite): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Автоматическая регистрация моделей self.register(Article) # Создание экземпляра кастомного административного сайта custom_admin_site = CustomAdminSite(name='customadmin')

Результат выполнения кода:

"Custom admin site created with Article model registered"

Особенности использования

При использовании метода register важно учитывать следующие моменты:

  • Если попытаться зарегистрировать одну и ту же модель дважды, будет вызвано исключение AlreadyRegistered
  • Метод может принимать как одну модель, так и итерируемый объект моделей
  • При регистрации без указания класса ModelAdmin используется стандартная конфигурация
  • Для отмены регистрации модели используется метод unregister

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

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