Использование соединений Django using() со связанными полями
У меня есть проект Django, которому время от времени требуется доступ (только для чтения) к определенной паре иностранных баз данных. Обе базы данных имеют идентичные схемы.
Я сделал приложение Django для схемы базы данных. Я также настроил маршрутизатор базы данных таким образом, что доступ на чтение будет возвращать "unknown" (буквально эту строку), что приводит к "неизвестному соединению". Это сделано намеренно, так что using(connection)
явно требуется, а по умолчанию нет.
Моя проблема в том, что как только я беру объект из модели, using()
теряется для связанных объектов. Поля внешних ключей не наследуют using()
, как и такие вещи, как obj.foo_set.all()
. Что еще более странно, obj.foo_set.using(...).all()
, похоже, тоже не применяет using(connection)
.
Похоже, что единственное решение - это вручную разрешить все связанные поля с помощью чего-то вроде OtherModel.objects.using(obj_id=obj.id)...
Есть ли другой способ справиться с этим? Мне трудно искать решение, потому что using
django
- довольно бесполезный поисковый запрос. Я не хочу глобально временно менять менеджеров.