#django #django-migrations #django-database
#django #django-миграции #django-база данных
Вопрос:
Я пишу DB router
, чтобы контролировать, что должно быть или не применяться к БД, поэтому реализовал allow_migrate() .
Вот что я сделал:
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'django_q':
return db == 'tasks'
elif app_label != 'django_q':
return db == 'default'
Я ожидал, что при router
возврате False
a приложение вообще не будет применено к текущей БД, это произошло каким-то образом, таблицы не были созданы, но весь список миграции приложений добавляется в django_migrations
таблицу в БД.
Я ожидал, что при allow_migrate()
возврате False
Django ничего не добавит в текущую базу данных об этом приложении, но если такое поведение является ожидаемым, то это то же migrate --fake
самое, что и, верно? если это так, я предпочитаю делать это вручную для другой базы данных.
Я провел некоторое исследование, чтобы узнать, что на самом деле делается при allow_migrate()
возврате False
, но не повезло.
Заранее спасибо.