class TenantMixin: def get_queryset(self): qs = super().get_queryset() tenant = getattr(self.request.user, 'tenant', None) if tenant and not self.request.user.is_superuser: # Models with patient FK: if hasattr(qs.model, 'patient'): return qs.filter(patient__tenant=tenant) # NoteTemplate uses tenant directly: return qs.filter(tenant=tenant) return qs def get_object(self, queryset=None): qs = queryset or self.get_queryset() return super().get_object(qs) class FormKwargsMixin: def get_form_kwargs(self): kw = super().get_form_kwargs() kw['user'] = self.request.user kw['tenant'] = getattr(self.request.user, 'tenant', None) return kw