Я использовал ручной выбор БД, чтобы справиться с проектом, в котором есть два отдельных БД. Я определил свои базы данных в настройках. После некоторого дальнейшего чтения кажется, что маршрутизация базы данных - действительно способ пойти с этим. Тем не менее, после прочтения документации и некоторых соответствующих сообщений здесь я запутался как никогда.
В моих настройках у меня есть:
DATABASES = {
'default': {
....
},
'my_db2': {
....
}
}
DATABASE_ROUTERS = ['myapp2.models.MyDB2Router',]
Я знаю, что должен определить свой класс маршрутизатора (я думаю в myapp2.models.py) примерно так:
class MyDB2Router(object):
"""A router to control all database operations on models in
the myapp2 application"""
def db_for_read(self, model, **hints):
if model._meta.app_label == 'myapp2':
return 'my_db2'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'myapp2':
return 'my_db2'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'myapp2' or obj2._meta.app_label == 'myapp2':
return True
return None
def allow_syncdb(self, db, model):
if db == 'my_db2':
return model._meta.app_label == 'myapp2'
elif model._meta.app_label == 'myapp2':
return False
return None
Тогда что? Требуется ли для каждой модели meta.app_label или это автоматически?
Кроме того, я все еще получаю ошибку:
django.core.exceptions.ImproperlyConfigured: Ошибка при импорте маршрутизатора базы данных JournalRouter: "не удается импортировать имя соединения
Может ли кто-нибудь помочь мне понять, что происходит и что не так? Любая помощь высоко ценится.