Использование 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(), охватывая несколько баз данных? Любая помощь будет оценена по достоинству.

Вернуться на верх