# -*- coding: utf-8 -*- """ Скрипт для переключения в пространство конкретного тенанта. Использование: python switch_to_tenant.py grach """ import os import sys import django os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') django.setup() from django.db import connection from tenants.models import Client if len(sys.argv) < 2: print("Использование: python switch_to_tenant.py ") print("\nДоступные тенанты:") for client in Client.objects.all(): print(f" - {client.schema_name}: {client.name}") sys.exit(1) schema_name = sys.argv[1] try: # Находим тенанта client = Client.objects.get(schema_name=schema_name) print(f"Найден тенант: {client.name} ({client.schema_name})") # Переключаемся на схему тенанта connection.set_tenant(client) print(f"Переключено на схему: {connection.tenant.schema_name}") print("") # Теперь можем работать с данными тенанта print("=" * 60) print("Теперь вы работаете в контексте тенанта!") print("=" * 60) print("") # Примеры работы с данными тенанта from products.models import Product from customers.models import Customer from orders.models import Order products_count = Product.objects.count() customers_count = Customer.objects.count() orders_count = Order.objects.count() print(f"Товары: {products_count}") print(f"Клиенты: {customers_count}") print(f"Заказы: {orders_count}") print("") # Интерактивный режим print("Запуск интерактивной оболочки...") print("Вы можете использовать: Product, Customer, Order и другие модели") print("") import code code.interact(local=locals()) except Client.DoesNotExist: print(f"Ошибка: Тенант с schema_name '{schema_name}' не найден") print("\nДоступные тенанты:") for client in Client.objects.all(): print(f" - {client.schema_name}: {client.name}") sys.exit(1)