
Overview
********


Contents
^^^^^^^^

* Overview

  * What is Modified Preorder Tree Traversal?

  * What is "django-mptt"?

    * Feature overview


What is Modified Preorder Tree Traversal?
=========================================

MPTT is a technique for storing hierarchical data in a database. The
aim is to make retrieval operations very efficient.

The trade-off for this efficiency is that performing inserts and
moving items around the tree is more involved, as there's some extra
work required to keep the tree structure in a good state at all times.

Here's a good article about MPTT to whet your appetite and provide
details about how the technique itself works:

   * Storing Hierarchical Data in a Database


What is "django-mptt"?
======================

"django-mptt" is a reusable Django app which aims to make it easy for
you to use MPTT with your own Django models.

It takes care of the details of managing a database table as a tree
structure and provides tools for working with trees of model
instances.


Feature overview
----------------

* Simple registration of models - fields required for tree structure
  will be added automatically.

* The tree structure is automatically updated when you create or
  delete model instances, or change an instance's parent.

* Each level of the tree is automatically sorted by a field (or
  fields) of your choice.

* New model methods are added to each registered model for:

  * changing position in the tree

  * retrieving ancestors, siblings, descendants

  * counting descendants

  * other tree-related operations

* A "TreeManager" manager is added to all registered models. This
  provides methods to:

  * move nodes around a tree, or into a different tree

  * insert a node anywhere in a tree

  * rebuild the MPTT fields for the tree (useful when you do bulk
    updates outside of django)

* Form fields for tree models.

* Utility functions for tree models.

* Template tags and filters for rendering trees.

* Translations for:

  * Danish

  * French

  * German

  * Polish
