Skip to main content

This project is currently unmaintained

django-mptt works by storing pre-computed left/right/level/tree_id values alongside each row. This makes reads very fast, but it means that every insert, move, or delete must update a potentially large number of sibling and ancestor rows. This write amplification is the fundamental reason the library is hard to maintain: concurrent writes can race and corrupt the tree, bulk operations bypass the update logic entirely, and any code that touches the database outside of django-mptt (raw SQL, bulk_update, migrations) can leave the tree in an inconsistent state. Rebuilding with rebuild() is the escape hatch, but it locks the table.

If you are starting a new project, or can afford to migrate, consider an alternative. Newer databases support recursive Common Table Expressions (CTE), which let you store only a parent FK and compute ancestry on the fly. See django-tree-queries for such an implementation and its announcement blog post. Other alternatives are listed on Django Packages.

django-mptt itself is kept alive on a best-effort basis — bugs get fixed when reported with a clear reproduction, compatibility with new Django versions is maintained, but new features will not be added.

django-mptt

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

Build Status

Project home: https://github.com/django-mptt/django-mptt/

Documentation: https://django-mptt.readthedocs.io/

Discussion group: https://groups.google.com/forum/#!forum/django-mptt-dev

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

What is django-mptt?

django-mptt is a reusable Django app that 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.

Requirements

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.

Metadata

Release files for django-mptt 0.19.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-mptt 0.19.0
File Size Uploaded
django_mptt-0.19.0.tar.gz 72.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-mptt 0.19.0
File Interpreter ABI Platform
django_mptt-0.19.0-py3-none-any.whl Python 3 none any Details

Total release size: 193.8 kB

Release files / django_mptt-0.19.0.tar.gz

Download URL django_mptt-0.19.0.tar.gz
Size 72.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e7b624e98d8d9f1653ad1b4437b5ac1f15b740be693beceb233be917eb52389b
BLAKE2b-256 checksum
How to use checksums
6d7ff5d9e8b5eda5d4da3002b3502c2c73d430dc2aa6b9257af73f560545d928
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / django_mptt-0.19.0-py3-none-any.whl

Download URL django_mptt-0.19.0-py3-none-any.whl
Size 121.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77d7b207db03cba65afa10e0e0746cd3860391645e68f8b90e1ebc167d41f0fd
BLAKE2b-256 checksum
How to use checksums
26394163b4d6a3024ec2754c76c23d56e2277116c03a90b3e153e7f9305a3da8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.19.1

2 release files

This release

0.19.0 This release

2 release files

0.18.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.4

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

1 release file

0.6.0

1 release file

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.1

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page