首页 > 解决方案 > 当数据库路由器上的 allow_migrate() 返回 false 时,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'

我期待当 arouter返回时False,应用程序根本不会应用于当前数据库,它以某种方式发生,没有创建表,但是,整个应用程序迁移列表被添加到django_migrations数据库的表中。

我期待当allow_migrate()return时False,Django 不会向当前数据库添加任何关于此应用程序的内容,但如果这种行为是预期的,那么,这与 相同migrate --fake,对吧?如果是这样,我更喜欢为其他数据库手动操作。

我做了一些研究,看看allow_migrate()返回时实际做了什么,False但没有运气。

提前致谢。

标签: djangodjango-migrationsdjango-database

解决方案


推荐阅读