Как Django оценивает менеджеры объектов, когда у нас их несколько?

Рассмотрим следующие объекты в Django ORM:

class Post(models.Model):
   ...
   published = PublishedPostManager()
   objects = models.Manager()

Сейчас в админке Django отображаются только опубликованные. Можем ли мы изменить поведение, чтобы Django ORM использовал объекты по умолчанию без какого-либо порядка?

Как описано в docs:

Если вы используете пользовательские объекты Manager, обратите внимание, что первый Manager, с которым сталкивается Django (в том порядке, в котором они определены в модели), имеет особый статус. Django интерпретирует первый менеджер, определенный в классе, как менеджер "по умолчанию"

.

Чтобы использовать objects по умолчанию, поставьте его перед published:

class Post(models.Model):
    ...
    objects = models.Manager()
    published = PublishedPostManager()

или определить его как менеджер по умолчанию в модели Meta:

class Post(models.Model):
    ...
    published = PublishedPostManager()
    objects = models.Manager()

    class Meta:
        default_manager_name = 'objects'
Вернуться на верх