2

我的项目正在使用 Multiple Data Base 来管理 Auth 、内容类型信息和 Project App。

我的数据库设置:

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 

当我做同步数据库时,所有应用程序内容类型都会在“auth_db”中更新。我想停止这个并与“默认”数据库同步。这样所有表将仅在默认数据库中创建和更新。

当项目运行时,它将根据路由器配置使用读写。

我怎样才能做到这一点 ?

4

1 回答 1

1

我通过更新写入函数来修复它

def db_for_write(self, model, **hints):
    if model._meta.app_label in ("sessions",) :
        return "auth_db"
    return "default"

所以syncdb不会将任何数据写入“auth”和“contenttypes”

于 2013-06-12T04:40:08.097 回答