Получить выбранную базу данных внутри миграции при запуске manage.py migrate --database = database - PullRequest
1 голос
/ 01 апреля 2019

У меня есть миграция данных, которая загружает записи в мою базу данных, как показано ниже:

def load_groups(apps, _):
    Group = apps.get_model('auth', 'Group')

    Group(
        name='Admin'
    ).save()
    Group(
        name='Product Manager'
    ).save()
    Group(
        name='Developer'
    ).save()

migrations.RunPython(
    code=load_groups,
)

Этот код отлично работает при запуске manage.py migrate.

Однако, если я запускаю manage.py migrate --database=copyМиграции применяются к базе данных с псевдонимом copy, но секция load_groups пытается сохранить в базе данных псевдоним default.

Я знаю, что могу указать, куда сохранять создание группы, но яне могу найти способ получить доступ к имени используемого псевдонима базы данных.

Буду признателен за любые идеи.

settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django_prometheus.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'copy': {
        'ENGINE': 'django_prometheus.db.backends.mysql',
        'NAME': 'dev',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': 3306,
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...