Я создал собственный диспетчер для модели Django, который возвращает QuerySet, содержащий подмножество objects.all(). Мне нужно, чтобы это был менеджер по умолчанию для модели, так как я также создаю специальный тег, который будет извлекать контент из любой модели (указанный аргументом) и должен использовать диспетчер по умолчанию для указанной модели. Все, что работает отлично, кроме - Django Admin также использует менеджер по умолчанию для этой конкретной модели, а это означает, что не все экземпляры модели появляются в админке.
Документы Django не помогают:
Если вы используете объекты Custom Manager, обратите внимание, что первый менеджер Django встречается (в порядок, в котором они определены в модели) имеет особый статус. Django интерпретирует этот первый Менеджер, определенный в классе как "менеджер по умолчанию", а несколько частей Django (, но не приложение admin) будут использовать этот Менеджер исключительно для этой модели. (Документация менеджеров Django)
Администратор не должен использовать диспетчер по умолчанию, но, похоже, в моем случае. Обратите внимание, что я также явно добавил менеджер по умолчанию objects
:
subset = CustomManager() # the default manager
objects = models.Manager() # the one I want admin to use
Как я могу указать, какой менеджер должен использовать администратор?