我在settings.py中配置了两个数据库,默认的一个和另一个名为"local_mysql"。
我想创建一个模型,这样当我执行python manage.py syncdb
时,它只填充在local_mysql
数据库中。这怎么可能?
我在周围找不到太多东西。
您需要实现一个数据库路由器,如文档中所述:
如果不希望每个应用程序都同步到特定的数据库,您可以定义一个数据库路由器来实现限制特定模型可用性的策略。
要定义路由器,它只是一个带有一些方法的类:
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']
您需要不同的设置文件。在settings下添加local.py。然后运行python
manage.py syncdb --settings=project.settings.local
点击此处查看投票最多的答案:如何在Django中管理本地和生产设置?