0

我在settings.py 中配置了两个数据库,一个是默认数据库,另一个是“local_mysql”。

我想创建一个模型,这样当我这样做时,python manage.py syncdb它只会填充到local_mysql数据库中。这怎么可能?

我找不到太多的搜索。

4

2 回答 2

0

您需要实现一个数据库路由器,如文档中所述:

如果您不希望每个应用程序都同步到特定数据库上,则可以定义一个数据库路由器,该路由器实施限制特定模型可用性的策略。

要定义您的路由器,它只是一个带有一些方法的类:

class MyRouter(object):

    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'yourappname':
            return 'local_mysql'
        return None

    def db_for_write(self, model, **hints):
        return self.db_for_read(model, **hints)

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

    def allow_migrate(self, db, model):
        if db == 'local_mysql':
            return model._meta.app_label == 'yourappname'
        elif model._meta.app_label == 'yourappname':
            return False
        return None

将此类放在与您的应用程序routers.py位于同一位置的文件中views.py,您要为其重定向数据库。

然后,在 中settings.py,添加以下内容:

DATABASE_ROUTERS = ['yourappname.routers.MyRouter']
于 2014-10-13T05:55:11.757 回答
0

您需要不同的设置文件。在设置下添加 local.py。然后运行python

manage.py syncdb --settings=project.settings.local

在此处查看投票最多的答案: 如何在 Django 中管理本地与生产设置?

于 2014-10-13T05:58:45.507 回答