Source code for fairdm.utils.models
"""Model mixins for FairDM models."""
from django.utils.decorators import classonlymethod
from fairdm.utils.utils import get_inheritance_chain
[docs]
class PolymorphicMixin:
"""A mixin for polymorphic base models that know their own ``type_of`` root."""
[docs]
@classonlymethod
def get_inheritance_chain(cls):
"""Return the model classes from this class up to ``type_of``, inclusive.
Returns:
The inheritance chain, most specific class first.
"""
return get_inheritance_chain(cls, cls.type_of)