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.

FIRST_CHILD = u'first-child'
LAST_CHILD = u'last-child'
LEFT = u'left'
RIGHT = u'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 = OrderedDict([('target', <mptt.forms.TreeNodeChoiceField object>), ('position', <mptt.forms.TreeNodePositionField object>)])
declared_fields = OrderedDict([('target', <mptt.forms.TreeNodeChoiceField object>), ('position', <mptt.forms.TreeNodePositionField 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.