У меня есть сайт, который использует две базы данных. У меня установлен маршрутизатор, как указано в документации django. Маршрутизация работает отлично, когда я использую сервер. Однако я не смог проверить его с помощью 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 = True в TestCase.
Другая проблема заключалась в том, что dumpdata --database = filemaker screener.ScreenerRouter возвращает пустой массив, хотя в базе данных есть записи. Я даже могу их редактировать в DjangoAdmin. Мне пришлось копировать данные в базу данных по умолчанию и выгружать ее оттуда.