A custom manager for working with trees of objects.
A manager for working with trees of objects.
Adds a related item count to a given QuerySet using its extra method, for a Model class which has a relation to this Manager‘s Model class.
Arguments:
Sets up the tree state for node (which has not yet been inserted into in the database) so it will be positioned relative to a given target node as specified by position (when appropriate) it is inserted, with any neccessary space already having been made for it.
A target of None indicates that node should be the last root node.
If save is True, node‘s save() method will be called before it is returned.
NOTE: This is a low-level method; it does NOT respect MPTTMeta.order_insertion_by. In most cases you should just set the node’s parent and let mptt call this during save.
Moves node relative to a given target node as specified by position (when appropriate), by examining both nodes and calling the appropriate method to perform the move.
A target of None indicates that node should be turned into a root node.
Valid values for position are 'first-child', 'last-child', 'left' or 'right'.
node will be modified to reflect its new tree state in the database.
This method explicitly checks for node being made a sibling of a root node, as this is a special case due to our use of tree ids to order root nodes.
NOTE: This is a low-level method; it does NOT respect MPTTMeta.order_insertion_by. In most cases you should just move the node yourself by setting node.parent.