Simple way to create, persist and manipulate reliable tree structures using Django models.
Project description
django_trees
Simple way to create, persist and manipulate reliable tree structures using Django models.
Installation
pip install django-trees
API Usage
Create Model
To create a model extend AbstractNode and add desired fields.
from django.db import models
from django_trees.models import AbstractNode
class Folder(AbstractNode):
name = models.CharField(max_length=10)
Create Tree Nodes
To create a tree node, there is nothing different than creating a normal Django model other than you may specify a parent node.
root = Folder.objects.create(name="Root")
documents = Folder.objects.create(name="Documents", parent=root)
downloads = Folder.objects.create(name="Downloads", parent=root)
projects = Folder.objects.create(name="Projects", parent=documents)
Get Node Descendants
To retrieve all of the descendants of a node (including children, grandchildren, great grandchildren, etc) use the get_descendants method. This method will return a flat list of node objects.
root.get_descendants()
Get Node Ancestors
To retrieve all of the ancestors of a node (including parents, grandparents, great grandparents, etc) use the get_ancestors method. This method will return a flat list of node objects.
projects.get_ancestors()
Get Node Children
To retrieve all immediate children of the current node use the get_children method. This method will return a flat list of node objects.
projects.get_children()
Move Node
To move a node to a different position in the tree use the move method passing the new parent node as an argument.
projects.move(root)
Bifurcate Node
To create a separate tree from a branch of an existing tree use the bifurcate method. The node object will be removed from the previous tree and it along with its descendants will now be in a new tree.
projects.bifurcate()
Get ASCII Tree
To get an ascii representation of the tree structure use the get_ascii_tree method.
projects.get_ascii_tree()
Demo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.