Form components for working with trees.

class mptt.forms.TreeNodeChoiceField(queryset, *args, **kwargs)

A ModelChoiceField for tree nodes.

class mptt.forms.TreeNodeMultipleChoiceField(queryset, *args, **kwargs)

A ModelMultipleChoiceField for tree nodes.

class mptt.forms.TreeNodePositionField(*args, **kwargs)

A ChoiceField for specifying position relative to another node.

DEFAULT_CHOICES = (('first-child', 'First child'), ('last-child', 'Last child'), ('left', 'Left sibling'), ('right', 'Right sibling'))
FIRST_CHILD = 'first-child'
LAST_CHILD = 'last-child'
LEFT = 'left'
RIGHT = 'right'
class mptt.forms.MoveNodeForm(node, *args, **kwargs)

A form which allows the user to move a given node from one location in its tree to another, with optional restriction of the nodes which are valid target nodes for the move.

base_fields = {'position': <mptt.forms.TreeNodePositionField object>, 'target': <mptt.forms.TreeNodeChoiceField object>}
declared_fields = {'position': <mptt.forms.TreeNodePositionField object>, 'target': <mptt.forms.TreeNodeChoiceField object>}

Attempts to move the node using the selected target and position.

If an invalid move is attempted, the related error message will be added to the form’s non-field errors and the error will be re-raised. Callers should attempt to catch InvalidNode to redisplay the form with the error, should it occur.