2016-04-20 1 views
1

Запуск миграции базы данных с RunPython на второй базе данных не удаетсяRunPython миграции на второй базе данных

python3 manage.py migrate --database=app 

Проблема заключается в том, что метод apps.get_model берет базу данных по умолчанию, который имеет уже новейшие миграции.

Не работает:

def copy_cpr_cents_to_euros(apps, schema_editor): 
    User = apps.get_model('accounting', 'User') 
    User.objects.filter(...); 

Работы:

def copy_cpr_cents_to_euros(apps, schema_editor): 
    User = apps.get_model('accounting', 'User') 
    User.objects.using('app').filter(...); 

Есть ли способ использовать данную базу данных в миграции, так как в этом случае "приложение", не делая явно разъяснив это, поскольку он должен работать для обеих баз данных?

Так что-то вроде:

User.objects.using(database_name).filter(...) 

ответ

0
schema_editor.connection.alias 

содержит строку текущей базы данных, с которой была начата миграция.

Таким образом, каждая миграция RunPython должна использовать этот псевдоним, чтобы вручную выбрать правильный db.

Смежные вопросы