diff --git a/asyncron/base/models.py b/asyncron/base/models.py index 9c767e5..de26ffb 100644 --- a/asyncron/base/models.py +++ b/asyncron/base/models.py @@ -48,10 +48,23 @@ class BaseModel( models.Model ): await sync_to_async(lambda: [ getattr(self, f) for f in fields ])() - def fields_to_dict( self, *fields ): + _model_dict_presentations = {} + @classmethod + def dict_presentation( cls, name ): + def attacher_decorator( f ): + cls._model_dict_presentations[name] = f + return f + return attacher_decorator + + def fields_to_dict( self, *fields, presentation_name = None ): """ To create json/dict from fields. """ + + if presentation_name: + assert presentation in self._model_dict_presentations, f"This model '{self.__class__}' does not have a '{presentation_name}' presentation!" + fields.extend( self._model_dict_presentations[presentation_name] ) + results = {} for f in fields: name, method = (f[0], f[1]) if isinstance(f, tuple) else (f, f) diff --git a/setup.py b/setup.py index 8fc353c..8073981 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='asyncron', - version='0.1.6', + version='0.1.7', packages=find_packages(), #include_package_data=True, # Include static files from MANIFEST.in install_requires=[