NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3900 most downloaded on PyPI
Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances.
Last release 4 months ago
02 Jun 2026
Ships fairly regularly
a new release about every 9 months
Rarely documented
notes for 7 of 44 stable releases
Nothing withdrawn
no release was ever pulled
19 years old
45 releases · first in 2008
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Support for Django 2.1 has been added, support for Django<1.11 is removed. Support for deprecated South has been removed.
Support for Python 3.3 has been removed. Support for Django 2.1 has been added, support for Django<1.11 is removed. Support for deprecated South has been removed.
Some updates have been made on the documentation such as:
Misc updates in the docs (formatting)
Added italian translation
Remove unnecessary db_index=True from doc examples
Include on_delete in all TreeForeignKey examples in docs
Use https:// URLs throughout docs where available
Document project as stable and ready for use in production
Add an example of add_related_count usage with the admin
Updates README.rst with svg badge
Update tutorial
Bug fixes:
Fix django-grappelli rendering bug (#661)
Fixing MPTT models (use explicit db)
Misc:
Update pypi.python.org URL to pypi.org
Remove redundant tox.ini options that respecify defaults
Remove unused argument from _inter_tree_move_and_close_gap()
Trim trailing white space throughout the project
Pass python_requires argument to setuptools
Added MpttConfig
Add test case to support ancestor coercion callbacks.
Extend tree_item_iterator with ancestor coercion callback.
Now supports django 1.11 and 2.0.
Now supports django 1.11 and 2.0.
Removed tests for unsupported django versions (django 1.9, 1.10)
Nothing published for this version
Now supports django 1.10. After upgrading, you may come across this error when running migrations::
Now supports django 1.10. After upgrading, you may come across this error when running migrations:
Unhandled exception in thread started by <function wrapper at 0x7f32e681faa0>
Traceback (most recent call last):
#...
File "venv/lib/python2.7/site-packages/django/db/models/manager.py", line 120, in contribute_to_class
setattr(model, name, ManagerDescriptor(self))
AttributeError: can't set attribute
To fix this, please replace ._default_manager in your historic migrations with .objects. For more detailed information see #469, #498
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Dropped support for old Django versions and Python 2.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unsupported versions of django (1.4, 1.5, 1.6, 1.7) are no longer supported, and Python 2.6 is no longer supported.
These versions of python/django no longer receive security patches. You should upgrade to Python 2.7 and Django 1.8+.
Django 1.9 support has been added.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Deprecated: Calling recursetree/cache_tree_children with incorrectly-ordered querysets ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…
Django 1.5 support has been removed since django 1.5 is not supported upstream any longer.
Django 1.8 support has been added.
Previously, when given a queryset argument, cache_tree_children called .order_by to ensure that the queryset was in the correct order. In 0.7, calling cache_tree_children with an incorrectly-ordered queryset will cause a deprecation warning. In 0.8, it will raise an error.
This also applies to recursetree, since it calls cache_tree_children.
This probably doesn't affect many usages, since the default ordering for mptt models will work fine.
Django renamed get_query_set to get_queryset in Django 1.6. For backward compatibility django-mptt had both methods available for 1.4-1.5 users.
This has been removed. You should use get_query_set on Django 1.4-1.5, and get_queryset if you're on 1.6+.
Deprecated in 0.6.0, this has now been removed.
Nothing published for this version
Deprecated FeinCMSModelAdmin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mptt 0.6 drops support for both Python 2.4 and 2.5.
This was done to make it easier to support Python 3, as well as support the new context managers (delay_mptt_updates and disable_mptt_updates).
If you absolutely can't upgrade your Python version, you'll need to stick to mptt 0.5.5 until you can.
Until 0.5, TreeNodeChoiceField and TreeNodeMultipleChoiceField implicitly set empty_label=True. This was around since a long time ago, for unknown reasons. It has been removed in 0.6.0 as it caused occasional headaches for users.
If you were relying on this behavior, you'll need to explicitly pass empty_label=True to any of those fields you use, otherwise you will start seeing new '--------' choices appearing in them.
If you were using mptt.admin.FeinCMSModelAdmin, you should switch to using feincms.admin.tree_editor.TreeEditor instead, or you'll get a loud deprecation warning.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
In 0.4, we deprecated all these attributes on model._meta. These have now been removed::
In 0.5, TreeManager now behaves just like a normal django manager. If you don't override anything, you'll now get a TreeManager by default (.objects.)
Before 0.5, .tree was the default name for the TreeManager. That's been removed, so we recommend updating your code to use .objects.
If you don't want to update .tree to .objects everywhere just yet, you should add an explicit TreeManager to your models:
objects = tree = TreeManager()
In earlier versions, MPTTModel.save() had a raw keyword argument. If True, the MPTT fields would not be updated during the save. This (undocumented) argument has now been removed.
In 0.4, we deprecated all these attributes on model._meta. These have now been removed:
MyModel._meta.left_attr MyModel._meta.right_attr MyModel._meta.tree_id_attr MyModel._meta.level_attr MyModel._meta.tree_manager_attr MyModel._meta.parent_attr MyModel._meta.order_insertion_by
If you're still using any of these, you'll need to update by simply renaming _meta to _mptt_meta.
Tests are now run with:
cd tests/ ./runtests.sh
The previous method (python setup.py test) no longer works since we switched to plain distutils.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →