Я использую ручной выбор db, чтобы справиться с проектом с двумя отдельными dbs. Я определил свои базы данных в настройках. После некоторого дальнейшего чтения кажется, что маршрутизация базы данных - это на самом деле способ пойти с этим. Однако после прочтения документов и некоторых соответствующих сообщений здесь я более смущен, чем когда-либо.
В моих настройках у меня есть:
DATABASES = {
'default': {
....
},
'my_db2': {
....
}
}
DATABASE_ROUTERS = ['myapp2.models.MyDB2Router',]
Я знаю, что мне нужно определить класс маршрутизатора (I подумать в 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: "невозможно импортировать имя соединения
Может ли кто-нибудь помочь мне понять, что происходит и что происходит не так? Любая помощь очень ценится.