Это зависит от вашей ситуации.Если вы не используете метод менеджера , тогда using()
хорошо, в противном случае вам понадобится db_manager()
.
. Вы можете выбрать базу данных для QuerySet
влюбой точке в цепочке QuerySet
. Просто вызовите using()
на QuerySet
, чтобы получить другую QuerySet
, которая использует указанную базу данных.
Но если вам нужно использовать методы менеджера, Это не будет работать.
Следующее объяснение взято из документов :
Допустим, у вас есть собственный метод менеджера, который касается базы данных - User.objects.create_user()
.Поскольку create_user()
- это метод менеджера, а не QuerySet
, вы не можете сделать User.objects.using('another_db').create_user()
. Метод create_user()
доступен только для User.objects
, менеджер, но не для QuerySet
объектов, полученных из менеджера. Решение состоит в том, чтобы использовать db_manager()
, например:
User.objects.db_manager('another_db').create_user(...)
db_manager()
возвращает копию менеджера, привязанного к указанной вами базе данных.