Выполнение подзапросов в Django ORM из двух разных баз данных
У меня есть две модели Model1 и Model2, где таблица для Model1 определена в db1, а для Model2 - в db2. У меня настроен маршрутизатор для операций чтения из обеих баз данных, который отлично работает для простых операций чтения, но для сложных аннотаций и подзапросов я не могу понять, как заставить ORM понять, в какой базе данных искать таблицы.
Вот что я пытаюсь сделать прямо сейчас:
from django.db.models import OuterRef, Subquery
from app1.models import Model1
from app2.models import Model2
model1_qs = Model1.objects.using('db1').filter(id=OuterRef('context_id'))
model2_qs = Model2.objects.using('db2').all()
res = model2_qs.objects.using('db1').annotate(
model1_value=Subquery(model1_qs.values('value')[:1])
)
Я ожидаю, что res
будет аннотированным набором queryset с model1_value
, полученным из db1
. Но вместо этого получаю ошибку "Таблица не найдена". Django пытается найти Model1 в db2...
P.S. Мне нужно выполнить такие запросы в существующих представлениях большого проекта, поэтому использование необработанных SQL-запросов не является для меня реальным вариантом.