django-mptt 0,1,3,0,1,0,3 travis-ci python

Utilities for implementing a modified pre-order traversal tree in django.

2 years after MIT

=========== django-mptt

Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances.

.. image:: :alt: Build Status :target:

Project home:


Discussion group:

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 are a few articles about MPTT to whet your appetite and provide details about how the technique itself works:

  • Trees in SQL_
  • Storing Hierarchical Data in a Database_
  • Managing Hierarchical Data in MySQL_

.. Trees in SQL: .. Storing Hierarchical Data in a Database: .. _Managing Hierarchical Data in MySQL:

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.


  • Python 2.7 or 3.3+
  • A supported version of Django (currently 1.8+)

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.

  • Admin classes_ for visualizing and modifying trees in Django's administration interface.

.. Form fields: .. Utility functions: .. Template tags and filters: .. Admin classes:

Related Repositories



Django-mptt-admin provides a nice Django Admin interface for Mptt models ...



Django mptt issue 424 ...

Top Contributors

craigds matthiask BertrandBordage musashiXXX claudep karabijavad thedrow danielnaab benjaoming slafs seniorquico samluescher melinath roxeteer pi-byteorbit gaqzi Aramgutang BayarkhuuBataa pjdelport goinnn kux ethifus ad-m piquadrat epicserve brosner dekkers spookylukey ticosax rense


-   0.8.6 zip tar
-   0.8.5 zip tar
-   0.8.4 zip tar
-   0.8.3 zip tar
-   0.8.2 zip tar
-   0.8.1 zip tar
-   0.8.0 zip tar
-   0.7.4 zip tar
-   0.7.3 zip tar
-   0.7.2 zip tar
-   0.7.1 zip tar
-   0.7.0 zip tar
-   0.6.1 zip tar
-   0.6.0 zip tar
-   0.6.rc2 zip tar
-   0.6.rc1 zip tar
-   0.5.5 zip tar
-   0.5.4 zip tar
-   0.5.3 zip tar
-   0.5.2 zip tar
-   0.5.1 zip tar
-   0.5.0 zip tar
-   0.4.2 zip tar
-   0.4.1 zip tar
-   0.4.0 zip tar
-   0.3.1 zip tar
-   0.3.0 zip tar