Как использовать django shell в нескольких базах данных

Я пытаюсь запустить django shell в разных базах данных. Но безуспешно. Я попытался переопределить django Command и установить собственное соединение. Посмотрите на пример ниже. Но кажется, что это не работает. Есть мысли, как это сделать?

К сожалению, решение с Model.objects.using("db_name")..... не подходит для моего случая.

Код, который я пробовал:

class Command(DefaultShell):

    def add_arguments(self, parser):
        super().add_arguments(parser)
        parser.add_argument(
            '--database',
            dest='database_name',
            help='Specific database to run shell',
            required=False,
        )

    def __set_database_for_current_connection(self, database_name: str):
        connections.ensure_defaults(database_name)
        connections.prepare_test_settings(database_name)
        db = connections.databases[database_name]
        backend = load_backend(db['ENGINE'])
        return backend.DatabaseWrapper(db, database_name)

    def handle(self, *args, **options):
        database = options.get('database')
        conn = self.__set_database_for_current_connection(database)
        super().handle(*args, **options)
        conn.close()


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