任何人都可以如此友好地向我解释文档中的含义: https://docs.djangoproject.com/en/1.7/topics/db/multi-db/#topics-db-multi-db-hints
我在myproject / settings.py
中添加了一个新数据库DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'testdb',
'USER': 'test',
},
'db2': {
'ENGINE': 'mysql.connector.django',
'NAME': 'db2a',
} }
但只有当我用db2替换默认值时,此命令才有效:
python manage.py inspectdb > models.py
现在我从db2获取模型,如何从中读取db2和默认值?
1)如果我尝试makemigrations,它会看到所有新模型,但它会尝试创建它们,我只需要阅读它们因为它们已经存在...
现在我们需要处理路由。首先,我们想要一个知道的路由器 将auth应用程序的查询发送到auth_db
2)应该在AuthRouter(object):
添加哪个文件?
我可以在settings.py?
from django.conf import settings
class db_Router(object):
def db_for_read(self, model, **hints):
return 'db2'
def db_for_write(self, model, **hints):
return 'default'
def allow_relation(self, obj1, obj2, **hints):
db_list = ('default', 'db2')
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None
def allow_migrate(self, db, model):
return True
def allow_syncdb(self, db, model):
if db == 'db2':
return model._meta.app_label == 'appofdb2'
elif model._meta.app_label == 'appofdb2':
return False
return None
这应该有用吗?或者我完全不合适?
答案 0 :(得分:2)
回答自己:
1)python manage.py inspectdb --database=db2 > models.py
2)在项目的根文件夹中创建一个routers.py文件
一切都像魅力一样!