Выполнение подзапросов в 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-запросов не является для меня реальным вариантом.

Вернуться на верх