База данных Django Postgres с несколькими схемами. Как добавить записи в определенную схему через shell

В настоящее время я работаю над django multi tenant, используя общую базу данных с несколькими схемами. Как я могу добавить записи в конкретную схему через shell.Как я могу получить объекты базы данных конкретной схемы в views.py

После долгих поисков я получил ответ.

from django.db import connection
connection.schema_name = 'Your schema name'

Затем отфильтруйте модели, это покажет только записи в этой схеме. Предположим, после назначения схемы connection.schema_name = 'Your schema name' и фильтрации модели User User.objects.all() она покажет только объекты пользователей в этой схеме.

Если мы зададим имя схемы, которая еще не существует, например connection.schema_name = 'Schema name which is not present', то при фильтрации модели она всегда будет показывать записи схемы public

Если вы используете django-tenants, вы можете использовать tenant_command для запуска команды на определенной схеме (т.е. арендаторе). Вы можете найти документацию tenant_command здесь.

В вашем случае, команда, которую вы ищете, следующая:

python3 manage.py tenant_command shell --schema [SCHEMA_NAME]
<
Вернуться на верх