Source code for django_sorcery.db.meta.base
"""Base model metadata things."""
import sqlalchemy as sa
[docs]class model_info_meta(type):
"""Model metadata singleton."""
_registry = {}
def __call__(cls, model, *args, **kwargs):
obj = sa.inspect(model)
if isinstance(obj, sa.orm.Mapper):
model = obj.class_
if isinstance(obj, sa.orm.state.InstanceState):
model = obj.mapper.class_
if model not in cls._registry:
instance = super().__call__(model, *args, **kwargs)
cls._registry[model] = instance
return cls._registry[model]