Маршрутизатор с несколькими базами данных - PullRequest
0 голосов
/ 17 марта 2020

Проект состоит из двух баз данных: первая: стандартная (с которой я работал и содержит несколько моделей) и вторая: клиентская (она должна обрабатывать только одну модель).

Имя приложения : города

Имена базы данных: по умолчанию и клиент

Модель в базе данных клиента: 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 хранится в базе данных по умолчанию. Как я могу сохранить это поле в другой БД?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...