두 데이터베이스를 사용하는 웹 사이트가 있습니다. 난 장고 문서에 명시된 바와 같이 라우터를 설정했습니다. runserver를 사용할 때 라우팅이 올바르게 작동합니다. 그러나 LiveServerTestCase를 사용하여 테스트 할 수 없었습니다. queryset은 비어 있습니다. 조명기가 두 번째 데이터베이스에 올바르게로드되지 않았다고 가정합니다. 데이터베이스 라우터를 제거하면 테스트가 작동하므로 하나의 db 만 사용하십시오. 내가 테스트 케이스에 multi_db = true로 설정 한장고의 여러 데이터베이스에 고정물을로드하십시오.
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
:
다음은 공유기의 설정입니다.
또 다른 문제점은 DB에 항목이 있어도 dumpdata --database = filemaker screener.ScreenerRouter는 빈 배열을 반환한다는 것입니다. DjangoAdmin에서 편집 할 수도 있습니다. 데이터를 기본 DB에 복사하고 거기에서 덤프해야했습니다.