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:
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.
- 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