Использование Django select_related в нескольких базах данных
У меня есть два подключения к базе данных в проекте Django, ниже приведены настройки базы данных:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql_db_name',
'USER': 'mysql_user',
'PASSWORD': 'mysql_db_pass',
'HOST': 'localost',
'PORT': '3306',
},
'postgres_db': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgresql_db_name',
'USER': 'postgresql_user',
'PASSWORD': 'postgresql_db_pass',
'HOST': 'localhost',
'PORT': '5432',
}
А это модели:
# sales/models.py
from django.contrib.auth.models import User # Django's auth user model this is in MySQL
class Batch(models.model): # this table is in PostgreSQL
class params:
db = 'postgres_db'
created_by = ForeignKeyAcrossDb(User, db_constraint=False, on_delete=models.DO_NOTHING)
ForeignKeyAcrossDb
работает нормально, что унаследовано от models.Foreignkey
.
Внешний ключ в нескольких базах данных работает как ожидалось, это не проблема, меня беспокоит использование select_related()
.
Если я запускаю ORM
data = Batch.objects.filter(created_by=request.user.pk)
он работает нормально.
Но я хочу запустить этот ORM с помощью select_related() следующим образом
data = Batch.objects.select_related('created_by').filter(created_by=request.user.pk)
Это дает ошибку
ProgrammingError at /
relation "auth_user" does not exist
LINE 1: ...r"."date_joined" FROM "sales_batch" INNER JOIN "auth_user...
Что довольно очевидно, поскольку auth_user
находится в MySQL, а select_related()
ищет в PostgreSQL, чтобы join
работал.
Как я могу использовать select_related()
, охватывая несколько баз данных?
Любая помощь будет оценена по достоинству.