put installed app model in selected database

时间:2015-07-31 20:08:24

标签: python django

I have installed app named registration-redux, and I would like to store user data (and some other minor things) in a sqlite database called default. However, the data structures get added automatically to other databases, which is redundant.

Normally, I go to models.py and put in a desired model a label:

class some_model(models.Model):
    name = models.CharField(max_length=20, primary_key=True)

    class Meta:
        app_label = 'default'

And in settings.py I select which models go to which database:

DATABASE_APPS_MAPPING = {'market_data': 'market_data',
                         'registration': 'default'} # this doesn't work

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'market_data': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'market_data.sqlite3'),
    }
}

Now, when I migrate market_data database, redundant structures like auth_user, auth_group, etc. get added. How can I omit them?

1 个答案:

答案 0 :(得分:0)

对于Django 1.7

创建文件 routers.py ,并在此文件中写:

class Market_data_router(object):
    def allow_migrate(self, db, model):
        if db == 'market_data':
            if model.__name__ != 'Market_data':
                return False
        return None

settings.py 中写道:

DATABASE_ROUTERS = ['routers.Market_data_router']

最后,创建,清除“数据库:

./manage.py migrate --database=market_data