Маршрутизация и промежуточное ПО для нескольких баз данных в Django - PullRequest
0 голосов
/ 08 мая 2019

У меня проблема с правильной настройкой промежуточного программного обеспечения и маршрутизаторов для поддержки нескольких баз данных, по одной для каждого языка (я решил разделить их).

Я пытался использовать это решение ,но на данный момент я не особо его использовал.

В моих settings.py базы данных и промежуточное ПО определены следующим образом:

DATABASES = {
    'default': {},
    'ru': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db_ru.sqlite3',
    },
    'en': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db_en.sqlite3',
    }
}

DATABASE_ROUTERS = ['me.middleware.database_routing.DatabaseRouter']

MIDDLEWARE = [
    'me.middleware.database_routing.RouterMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

database_routing.py используемый в 'me.middleware.database_routing' полностью соответствует этому промежуточному программному обеспечению .

При запуске сервера возникает ошибка: RouterMiddleware () не принимает аргументов ,Я считаю, что есть некоторый недостаток в отношении кода промежуточного программного обеспечения.Также я не могу перейти на свои базы данных, я получаю ValueError: Cannot assign "<ContentType: ContentType object (1)>": the current database router prevents this relation.

Может быть, есть какое-то другое решение?

...