我正在使用django 1.2,我必须在我的网站上设置第二个数据库 项目。一旦我设置了第二个连接和我的路由器 项目,我的所有测试用例,甚至没有提到那个 数据库开始失败。运行应用程序正常,syncdb 工作正常,只是我正在进行的测试(单元测试) 问题。
在我看来,永远不会创建第二个数据库, 即使我手动创建它(test_mydbname)它保持 失败。
支持吗?
答案 0 :(得分:1)
我必须添加一个DefaultRouter,然后我的测试再次开始工作。似乎在测试场景中,django不知道“默认”数据库。所有信息,包括测试数据库创建顺序:https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases
这是我的默认路由器(django 1.7,不太确定allow_relation和allow_migrate,不过
class DefaultRouter(object):
"""
A router for the default db. add last in settings
"""
db_label = 'default'
def db_for_read(self, model, **hints):
return self.db_label
def db_for_write(self, model, **hints):
return self.db_label
def allow_relation(self, obj1, obj2, **hints):
return True
def allow_migrate(self, db, app_label, model=None, **hints):
return True
并在settings.py中:
DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter']