Отношение "django_content_type" или "auth_user" не существует не существует с несколькими базами данных django
Здесь есть похожие на этот вопросы, но ни один не помог мне . Я буду очень конкретен в своем вопросе. Надеюсь, что причина ошибки поможет не только мне
Контекст:
Я использую Django 3.2.9. У меня есть модель UserProfile, которая является OneToOne для модели Auth. Модель UserProfile находится в приложении под названием account, которое добавляется к установленным приложениям.
Я хочу использовать несколько баз данных, поэтому я установил 2 базы данных соответствующим образом
DATABASES = {
"default": dj_database_url.parse(os.environ.get("DATABASE_URL")),
"other": dj_database_url.parse(os.environ.get("AUTH_DATABASE_URL")),
}
Для маршрутизации я добавил этот файл
class AuthRouter:
route_app_labels = {'auth', 'contenttypes', 'account'}
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'other'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'other'
return None
def allow_relation(self, obj1, obj2, **hints):
if (
obj1._meta.app_label in self.route_app_labels or
obj2._meta.app_label in self.route_app_labels
):
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.route_app_labels:
return db == 'other'
return None
А затем я указываю на эту маршрутизацию БД в моем settings.py файле как
DATABASE_ROUTERS = ['account.routers.db_router.AuthRouter']
После миграции и всего остального, это работает нормально, когда я запускаю сервер. Админ и API запросы работают как ожидалось. Никаких проблем нет.
Моя проблема:
В текущей вышеупомянутой установке, которую я имею, выполнение python manage.py test приводит к ошибке
Приведенная выше ошибка происходит, когда у меня есть эта строка в моем AuthRouter классе
route_app_labels = {'auth', 'contenttypes', 'account'}
Если я изменю эту строку, чтобы убрать account, то вместо этого я получу:
django.db.utils.ProgrammingError: relation "django_content_type" does not exist
Добавление нижеприведенной информации в каждый из моих тестовых примеров ничего не меняет.
databases = {"default", "other"}
Если установка нескольких баз данных в Django не имеет поддержки кросс-базовых отношений для тестов, какие у меня есть варианты?