2つのデータベースを使用しているWebサイトがあります。djangoのドキュメントに記載されているようにルーターを設定しています。runserverを使用すると、ルーティングは正常に機能します。ただし、LiveServerTestCaseを使用してテストすることはできませんでした。クエリセットは空です。フィクスチャが2番目のデータベースに正しくロードされていないと思います。データベースルーターを削除すると、テストは機能します(したがって、1つのデータベースのみを使用します)。
これが私のルーター設定です:
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
TestCaseでmulti_db=Trueを設定しました。
もう1つの問題は、DBにエントリがある場合でも、dumpdata --database =filemakerscreener.ScreenerRouterが空の配列を返すことでした。DjangoAdminで編集することもできます。データをデフォルトのDBにコピーして、そこからダンプする必要がありました。