Метод register

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

Синтаксис

pythonadmin_site.register(model, admin_class=None)

Параметры

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

Пример

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

pythonfrom django.contrib import admin
from myapp.models import Article

# Создание экземпляра административного сайта
admin_site = admin.AdminSite(name='myadmin')

# Регистрация модели со стандартным интерфейсом
admin_site.register(Article)

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

Пример

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

pythonfrom 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)

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

python"Model Article registered with custom admin interface"

Пример

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

pythonfrom 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__:

pythonfrom 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')

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

python"Custom admin site created with Article model registered"

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

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

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

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