Python Django多数据库路由器中的允许_关系
我的通用数据库AppsRouter类: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]
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_关系。