From e2995273ccbdd857d60a77ce211bf9527285b01e Mon Sep 17 00:00:00 2001 From: Oracle Date: Mon, 5 May 2025 11:27:15 +0200 Subject: [PATCH] Fixed shared dict presentation --- asyncron/base/models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/asyncron/base/models.py b/asyncron/base/models.py index 833752e..0ce879b 100644 --- a/asyncron/base/models.py +++ b/asyncron/base/models.py @@ -48,10 +48,13 @@ class BaseModel( models.Model ): await sync_to_async(lambda: [ getattr(self, f) for f in fields ])() - _model_presentations = {} @classmethod def presentation( cls, name ): def attacher_decorator( f ): + #We have to do this here so inherited classes are not sharing the dict below + if not hasattr( cls, '_model_presentations' ): + cls._model_presentations = {} + cls._model_presentations[name] = f return f return attacher_decorator @@ -63,6 +66,7 @@ class BaseModel( models.Model ): if presentation_name: + if not hasattr( self.__class__, '_model_presentations' ): self.__class__._model_presentations = {} assert presentation_name in self._model_presentations, f"This model '{self.__class__}' does not have a '{presentation_name}' presentation!" fields = list(fields) fields.extend( self._model_presentations[presentation_name].fields )