我有一個使用兩個數據庫的網站。我按照django文檔中的說明建立了一個路由器。當我使用runserver時,路由工作正常。但是我無法使用LiveServerTestCase對其進行測試。該查詢集是空的。 我假設燈具沒有正確加載到第二個數據庫中。 如果我刪除數據庫路由器(因此只使用一個數據庫),測試將起作用。加載裝置到Django的多個數據庫中
這裏是我的路由器的配置:
class ScreenerRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'screener':
return 'filemaker'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'screener':
return 'filemaker'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'screener' or obj2._meta.app_label == 'screener':
return True
return None
def allow_syncdb(self, db, model):
if db == 'filemaker':
return model._meta.app_label == 'screener'
elif model._meta.app_label == 'screener':
return False
return None
我在測試用例集multi_db =真。
另一個問題是,dumpdata --database = filemaker screener.ScreenerRouter返回一個空數組,即使DB中有條目。我甚至可以在DjangoAdmin中編輯它們。我不得不將數據複製到默認數據庫並從那裏轉儲它。