# `mptt.forms`

Form components for working with trees.

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>}
  property media

    Return all media required to render the widgets on this form.

  save()

    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.

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'