Это был - в API крайне низкий уровня для тех, кто смотрит на кодовом - в течение нескольких месяцев (каждый QuerySet
подкреплен Query
, который, в свою очередь, принимает DB в качестве аргумента). Для него нет документально подтвержденного API высокого уровня, но я знаю людей, которые уже делают, и делали такие вещи, как сценарии с несколькими DB/sharding.
... это не обязательно то, что требует большой рецензии; метод __init__()
QuerySet
принимает ключевое слово query
, которое должно быть экземпляром django.db.models.sql.Query
. Метод __init__()
Query
, в свою очередь, принимает аргумент ключевого слова connection
, который должен быть экземпляром (базовым подклассом для вашего БД) django.db.backends.BaseDatabaseWrapper
.
Оттуда это довольно легко; вы могли бы, например, переопределить get_query_set()
на менеджере, чтобы всегда возвращать QuerySet
с использованием необходимого вам соединения или настраивать такие вещи, как логика осколков, чтобы выяснить, какую БД использовать на основе входящих параметров запроса и т. д. и т. д.