Проект состоит из двух баз данных: первая: стандартная (с которой я работал и содержит несколько моделей) и вторая: клиентская (она должна обрабатывать только одну модель).
Имя приложения : города
Имена базы данных: по умолчанию и клиент
Модель в базе данных клиента: mail_receiver
Я следовал инструкциям некоторых Django, но это не работает , Я использую следующие маршрутизаторы:
routers.py
class defaultRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'cities':
return 'default'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'cities':
return 'default'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'cities' or \
obj2._meta.app_label == 'cities':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'cities':
return db == 'default'
return None
class customerRouter(object):
def db_for_read(self, model, **hints):
"""
Attempts to read user models go to default.
"""
if model == 'mail_receiver':
return 'customer'
return None
def db_for_write(self, model, **hints):
if model == 'mail_receiver':
return 'customer'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'cities' or \
obj2._meta.app_label == 'cities':
return True
return None
def allow_migrate(self, db, app_label, model_name='mail_receiver', **hints):
if app_label == 'cities':
return db == 'customer'
return None
settings.py
DATABASES = {
'default': {
'NAME':'cities',
'USER': 'root',
...
},
'customer': {
'NAME': 'customer',
'USER': 'root',
...
}
DATABASE_ROUTERS = [
'database_routers.routers.DbRouter',
'database_routers.routers.customerRouter', ]
Но это неправильно, потому что mail_receiver хранится в базе данных по умолчанию. Как я могу сохранить это поле в другой БД?