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

Метод unregister

Метод unregister применяется к экземпляру класса AdminSite и удаляет указанную модель (или список моделей) из интерфейса администратора. Это позволяет динамически управлять доступными моделями в админке, скрывая те из них, которые не должны отображаться в данный момент. Метод полезен при переопределении стандартного сайта администратора или при создании пользовательских административных интерфейсов с различными наборами моделей.

Синтаксис

admin_site.unregister(model)

Где admin_site - экземпляр класса AdminSite, а model - модель или список моделей, которые нужно удалить из регистрации. Если модель не была зарегистрирована ранее, метод вызовет исключение NotRegistered.

Пример

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

from django.contrib import admin from myapp.models import Article, Category # Регистрируем модели admin.site.register(Article) admin.site.register(Category) # Удаляем модель Article из админки admin.site.unregister(Article)

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

"Model Article was successfully unregistered from admin site"

Пример

Теперь рассмотрим, как удалить несколько моделей одновременно, передав список:

from django.contrib import admin from myapp.models import Article, Category, UserProfile # Регистрируем модели admin.site.register(Article) admin.site.register(Category) admin.site.register(UserProfile) # Удаляем несколько моделей одновременно admin.site.unregister([Article, Category])

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

"Models ['Article', 'Category'] were successfully unregistered from admin site"

Пример

Метод unregister особенно полезен при создании пользовательского сайта администратора с ограниченным набором моделей. Рассмотрим пример с пользовательским классом AdminSite:

from django.contrib.admin import AdminSite from myapp.models import Article, Category, UserProfile class CustomAdminSite(AdminSite): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Регистрируем все модели self.register(Article) self.register(Category) self.register(UserProfile) # Удаляем модель UserProfile из админки self.unregister(UserProfile) custom_site = CustomAdminSite(name='custom_admin')

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

"Custom admin site created with Article and Category models only"

Пример

Важно помнить, что попытка удалить незарегистрированную модель вызывает исключение. Обработаем эту ситуацию:

from django.contrib import admin from django.contrib.admin.exceptions import NotRegistered from myapp.models import Article, Comment try: admin.site.unregister(Comment) except NotRegistered: print("Comment model is not registered in admin site")

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

"Comment model is not registered in admin site"

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

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