Изменение схемы в представлениях с помощью Django Tenants
Я использую Django Tenants в своем проекте и создаю схему для каждого Tenant. У меня есть 'django.contrib.auth' и 'django.contrib.contenttypes' как в SHARED_APPS, так и в TENANT_APPS, и теперь я хочу создать определенные группы в схеме каждого арендатора. Проблема в том, что я постоянно читаю и записываю значения из публичной схемы. Я реализовал следующее:
DATABASES = {
'default': {
'ENGINE': 'django_tenants.postgresql_backend',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASS',
'HOST': 'DB_HOST',
'PORT': 'DB_PORT',
}
}
DATABASE_ROUTERS = (
'django_tenants.routers.TenantSyncRouter',
)
Как я могу перейти на другую схему? Могу ли я сделать это на представлении приложения?
Найдено решение,
my_schema_name = 'volvo'
from django_tenants.utils import schema_context
with schema_context(my_schema_name):
#do what you want here
По сути это была та же проблема, что и здесь (Access public schema from tenant schema, Django-Tenant), но с другой библиотекой (django-tenants). После проверки их исходного кода (https://github.com/django-tenants/django-tenants), выяснилось, что у них тот же метод.