Что делает django, когда allow_migrate() на маршрутизаторе базы данных возвращает false?

#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 , но не повезло.

Заранее спасибо.