Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django多数据库路由器中的允许_关系_Python_Django_Django Models - Fatal编程技术网

Python Django多数据库路由器中的允许_关系

Python Django多数据库路由器中的允许_关系,python,django,django-models,Python,Django,Django Models,我的通用数据库AppsRouter类: class DatabaseAppsRouter(object): def db_for_read(self, model, **hints): if settings.APPS_DATABASE_MAPPING.has_key(model._meta.app_label): return settings.APPS_DATABASE_MAPPING[model._meta.app_label]

我的通用数据库AppsRouter类:

class DatabaseAppsRouter(object):
    def db_for_read(self, model, **hints):
        if settings.APPS_DATABASE_MAPPING.has_key(model._meta.app_label):
            return settings.APPS_DATABASE_MAPPING[model._meta.app_label]
        return DEFAULT_DB_ALIAS

    def db_for_write(self, model, **hints):
        if settings.APPS_DATABASE_MAPPING.has_key(model._meta.app_label):
            return settings.APPS_DATABASE_MAPPING[model._meta.app_label]
        return DEFAULT_DB_ALIAS

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == settings.APP_QUES or obj2._meta.app_label == settings.APP_QUES:
           return True
        return None

    def allow_migrate(self, db, model):
        if db == DEFAULT_DB_ALIAS:
            if not(model._meta.app_label in settings.APPS_DATABASE_MAPPING.keys()):
                return True
            else:
                return False
        else:
            return settings.APPS_DATABASE_MAPPING.get(model._meta.app_label) == db
        return None
settings.py:

DATABASE_ROUTERS = ['rest_apis.database_app_router.DatabaseAppsRouter']
APPS_DATABASE_MAPPING = {APP_QUES: 'questions', 
                          'auth':'default'}
我的疑问是,我可以看到控件进入
allow\u migrate
db\u for\u write
,但每当我运行
/manage.py migrate
时,它不会进入
allow\u relation


这是一种正常的行为还是我的实现中有问题?

它应该在什么时候调用
allow\u relation
manage.py migrate
通常不创建任何对象,只创建表。@knbk那么什么时候开始使用allow\u关系呢?如果我们在DatabaseAppsRouter类中不提供此函数,会发生什么?保存两个相关行时会调用allow_关系,而不是创建fk约束时。它应该在何时调用
allow_关系
manage.py migrate
通常不创建任何对象,只创建表。@knbk那么什么时候开始使用allow\u关系呢?如果我们在DatabaseAppsRouter类中不提供这个函数会发生什么?当保存两个相关行时,而不是创建fk约束时,会调用allow_关系。