diff --git a/tenant_schemas/postgresql_backend/base.py b/tenant_schemas/postgresql_backend/base.py index d6ae824..8602051 100644 --- a/tenant_schemas/postgresql_backend/base.py +++ b/tenant_schemas/postgresql_backend/base.py @@ -185,14 +185,15 @@ class ContentTypeCacheDescriptor(object): # use weak for transient Manager owner._thread_local_cache._cache = weakref.WeakKeyDictionary() global_cache = owner._thread_local_cache._cache - get_cache = global_cache.get(owner) + model_cache = global_cache.setdefault(obj, weakref.WeakKeyDictionary()) + get_cache = model_cache.get(obj.model) if not get_cache: # use an LRU cache to evict dead tenants with time and to prevent # bloat with lot of tenants @lru_cache(maxsize=200) def get_cache(schema_name): return {} - global_cache[owner] = get_cache + global_cache[obj.model] = get_cache tenant = getattr(connection, 'tenant', None) schema_name = getattr(tenant, 'schema_name', 'public') return get_cache(schema_name)