django-mptt
v0.18.0Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances.
$ uv add django-mptt==========================================
This project is currently unmaintained
You can find alternatives to django-mptt on Django Packages_. Maybe you do not need MPTT, especially when using newer databases. See django-tree-queries for an implementation using recursive Common Table Expressions (CTE). Here's its announcement blog post_.
===========
django-mptt
Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances.
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:
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 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
- A supported version of Python: https://devguide.python.org/versions/#supported-versions
- A supported version of Django: https://www.djangoproject.com/download/#supported-versions
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
TreeManagermanager 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.
Details
- Version
- 0.18.0
- License
- MIT License
- Python
- >=3.9
- Maintainer
- Craig de Stigter <[email protected]>
Links
Release Cadence
Maintainers
- Craig de Stigter · [email protected]