""" Tenant-aware managers and querysets for multi-tenancy """ from django.db import models class TenantQuerySet(models.QuerySet): """QuerySet that automatically filters by current tenant.""" def for_tenant(self, hospital): """Filter records for specific hospital.""" return self.filter(hospital=hospital) def for_current_tenant(self, request): """Filter records for current request's tenant hospital.""" if hasattr(request, 'tenant_hospital') and request.tenant_hospital: return self.filter(hospital=request.tenant_hospital) return self class TenantManager(models.Manager): """Manager that uses TenantQuerySet.""" def get_queryset(self): return TenantQuerySet(self.model, using=self._db) def for_tenant(self, hospital): return self.get_queryset().for_tenant(hospital) def for_current_tenant(self, request): return self.get_queryset().for_current_tenant(request)