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