Метод using
Метод using применяется к QuerySet и позволяет явно указать, какую базу данных следует использовать для выполнения запроса. Это особенно полезно при работе с несколькими базами данных, настроенными в проекте Django. Метод принимает один аргумент - псевдоним базы данных, указанный в настройках DATABASES. Метод можно вызывать цепочкой, но он должен быть первым в цепочке методов QuerySet.
Синтаксис
Model.objects.using(alias).filter(**conditions)
Пример
Допустим, в проекте настроены две базы данных: 'default' для основных операций и 'replica' для чтения. Получим все статьи из базы-реплики:
from myapp.models import Article
# Получение всех статей из базы-реплики
articles = Article.objects.using('replica').all()
for article in articles:
print(article.title)
Результат выполнения кода:
"Первая статья"
"Вторая статья"
"Третья статья"
Пример
Используем метод using для выполнения операции сохранения объекта в конкретной базе данных. Сохраним новую статью в основную базу данных:
from myapp.models import Article
# Создание новой статьи в основной базе данных
article = Article(title='Новая статья', content='Содержимое статьи')
article.save(using='default')
print(article.title)
Результат выполнения кода:
"Новая статья"
Пример
Метод using также работает при выполнении агрегирующих запросов. Подсчитаем количество статей в базе-реплике:
from myapp.models import Article
from django.db.models import Count
# Подсчет статей в базе-реплике
count = Article.objects.using('replica').aggregate(total=Count('id'))
print(count['total'])
Результат выполнения кода:
"42"