我的项目是使用多数据库来管理身份验证,内容类型信息和项目应用程序。
我的数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_default',
'USER': 'root',
'PASSWORD': 'root',
'PORT': '',
},
'auth_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_auth_db',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '',
'PORT': '',
}
我有一个管理读写的路由器
def db_for_read(self, model, **hints):
if model._meta.app_label == "auth" or model._meta.app_label == "sessions" or model._meta.app_label == "contenttypes":
return "auth_db"
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == "auth" or model._meta.app_label == "sessions" or model._meta.app_label == "contenttypes":
return "auth_db"
return None
def allow_syncdb(self, db, model):
return True
当我执行syncdb时,所有应用程序内容类型都会在“auth_db”中更新。我想停止此操作并与“默认”数据库同步。这样所有表只会在默认DB中创建和更新。
当项目运行时,它将使用基于路由器配置的读写。
我该怎么做?
答案 0 :(得分:1)
我通过更新写入功能
来修复它def db_for_write(self, model, **hints):
if model._meta.app_label in ("sessions",) :
return "auth_db"
return "default"
因此syncdb不会将任何数据写入“auth”和“content types”