def get_meta_node_class_for_model(model, for_concrete_model=True):
"""
Meta nodes are used to generate a map of the relationships
in the database. There's only a single MetaNode per model.
:param model: Django model class.
:returns: A ``StructuredNode`` class.
"""
if for_concrete_model:
model = model._meta.concrete_model
if model in __meta_cache__:
return __meta_cache__[model]
else:
@six.add_metaclass(MetaNodeMeta)
class MetaNode(MetaNodeMixin, StructuredNode):
__metaclass_model__ = model
class Meta:
model = None # Will pick model from parent class __metaclass_model__ attribute
__meta_cache__[model] = MetaNode
return MetaNode
评论列表
文章目录