Связи для нескольких БД в django
Здравствуй, ЛОР!
Вот, разбираюсь с поддержкой нескольких БД в django'e (https://docs.djangoproject.com/en/dev/topics/db/multi-db/). Прошу многоуважаемое сообщество объяснить новичку один нетривиальный момент.
Есть две БД (settings.py):
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "service_db",
"USER": "service_db_user",
"PASSWORD": "SR7RMxKCVNxw8L3x",
},
"clients": {
"ENGINE": "django.db.backends.mysql",
"NAME": "clients_db",
"USER": "clients_db_user",
"PASSWORD": "J9qbq8VH3SCD4r74",
},
}
DATABASE_ROUTERS = ["clients.router.ClientsRouter"]
Есть роутер (routers.py):
class ClientsRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'clients':
return 'clients'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'clients':
return 'clients'
return None
def allow_relation(self, obj1, obj2, **hints):
db_list = ('default', 'clients')
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None
def allow_syncdb(self, db, model):
if db == 'clients':
return model._meta.app_label == 'clients'
elif model._meta.app_label == 'clients':
return False
return None
Есть связи - некоторые поля таблиц базы default связаны FK с некоторыми полями таблиц базы clients. Но когда в админке я создаю объект в базе default, который связан с объектом базы clients - выпадает ошибка - не может сохранить объект в базу clients. Хотя, по идее, данный объект должно все сохраняться в базу default.
Как подправить роутер для того, чтобы объекты базы defaults (нк поля которых связаны с полями clients) сохранялись в базе defaults и наоборот.