Nested Sets trees

An implementation of Nested Sets trees for Django 1.0+, as described by Joe Celko in Trees and Hierarchies in SQL for Smarties.

Nested sets have very efficient reads at the cost of high maintenance on write/delete operations.

digraph inheritance9297a3b266 {
rankdir=LR;
size="8.0, 12.0";
  "django.db.models.base.Model" [shape=box,style="setlinewidth(0.5)",fontsize=10,fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25];
  "treebeard.models.Node" [style="setlinewidth(0.5)",URL="api.html#treebeard.models.Node",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "django.db.models.base.Model" -> "treebeard.models.Node" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "treebeard.ns_tree.NS_Node" [style="setlinewidth(0.5)",URL="#treebeard.ns_tree.NS_Node",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "treebeard.models.Node" -> "treebeard.ns_tree.NS_Node" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

class treebeard.ns_tree.NS_Node(*args, **kwargs)

Bases: treebeard.models.Node

Abstract model to create your own Nested Sets Trees.

node_order_by

Attribute: a list of model fields that will be used for node ordering. When enabled, all tree operations will assume this ordering.

Example:

node_order_by = ['field1', 'field2', 'field3']
depth
PositiveIntegerField, depth of a node in the tree. A root node has a depth of 1.
lft
PositiveIntegerField
rgt
PositiveIntegerField
tree_id
PositiveIntegerField
classmethod get_tree(parent=None)
Returns:A queryset of nodes ordered as DFS, including the parent. If no parent is given, all trees are returned.

See: treebeard.Node.get_tree()

Note

This metod returns a queryset.

Previous topic

Materialized Path trees

Next topic

Adjacency List trees

This Page