Skip to content

model traversing library -- (this package is useless, use`Model._meta.get_fields()`)

Notifications You must be signed in to change notification settings

podhmo/django-mindscape

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-mindscape

  • (todo: gentle introduction)
  • (todo: add information about use case)

features

  • collecting information about dependencies of models (model -> parent)
  • collecting information about reverse dependencies of models (model -> [children])
  • listing model with dependencies-considered order.

(dependencies-considered order means, when i < j, models[i] doesn't depends on models[j])

how to use

from django_mindscape import ModelMapProvider, Walker, Brain
from django.apps import apps

walker = Walker(apps.get_models(), brain=Brain())
p = ModelMapProvider(walker)

"""
when ParentModel : YourModel = 1 : N
and OtherModel is existed.
"""

# model dependencies (bottom up)
for relation in p.dependencies[YourModel].dependencies:
    print(relation.from_.model)  # <YourModel>
    print(relation.to.model)  # <ParentModel>
    print(relation.type)  # relation type (candidates: 11, 1M, MM)

# reverse dependencies (top down)
for rnode in p.reverse_dependencies[ParentModel].dependencies:
    print(rnode.node.model)  # <YourModel>

# clustered model list
for cluster in p.cluster_models:  # [[ParentModel, YourModel], [OtherModel]]
    for model in cluster:
        print(model)

# ordered model list
for model in p.ordered_models:  # [ParentModel, YourModel, OtherModel]
    print(model)

About

model traversing library -- (this package is useless, use`Model._meta.get_fields()`)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages