Сделать так, чтобы модели на сайте администратора отображались только в режиме отладки, иначе отображается одна модель
Я хочу, чтобы мои модели отображались в админке только когда переменная debug установлена в True, когда debug установлена в False я хочу отображать только одну модель
Я ищу элегантный способ реализовать это
Я думал, что смогу сделать что-то вроде этого:
if not DEBUG:
admin.site._registry = {}
admin.site.register(Model 1)
Но где должен находиться этот код? Я хочу, чтобы он выполнялся после выполнения всех модулей admin.py из всех приложений, в которых происходит регистрация моделей.
Подведем итоги
DEBUG = TRUE На сайте администратора отображается:
- Модель 1
- Модель 2
- Модель 3
DEBUG = FALSE На сайте администратора отображается:
- Модель 1
Вы можете переопределить один из методов ready
в AppConfig
любого приложения. Например, если у вас есть приложение с именем app_name
, мы можем реализовать AppConfig
, которое выглядит следующим образом:
# app_name/apps.py
from django.apps import AppConfig
class AppNameConfig(AppConfig):
name = 'app_name'
def ready(self):
from app_name.models import SomeModel
from django.conf import settings
if not settings.DEBUG:
from django.contrib import admin
for cls in list(admin.site._registry):
if cls is not SomeName:
admin.site.unregister(cls)
return super().ready()
с SomeModel
моделью, которую вы хотите сохранить.