The comparison sheet below compares django-mptt and django-treebeard, two Django applications that enable you to easily add support for hierarchical data store to your models.
django-treebeard
has the advantage of offering multiple tree storage strategies, all neatly abstracted from using the same API.
However, I personally really prefer the approach taken by django-mptt
with respect to the way it keeps track of a node's parent: by means of a standard ForeignKey. This is less fragile, and by its smart usage of Django signals django-mptt
allows you to modify a node's parents from anywhere (including the admin interface) without having to resort to a custom API call.
My conclusion: if the Nested sets / Modified Preorder approach is applicable to your use case, I would opt for django-mptt
.
django-mptt | django-treebeard | |
---|---|---|
2009-07-01 (SVN) | 2009-06-14 (SVN) | |
Supported tree types | django-mptt | django-treebeard |
Nested sets / MP | ||
Materialized path | ||
Adjacency list | ||
Project status | django-mptt | django-treebeard |
Last update (SVN) | 2009-07-01 | 2009-06-14 |
Official release (Date) | Jan. 16, 2008 | Nov. 20, 2008 |
Official release (Version) | 0.2.1 | 1.1 |
Documentation | ||
Features | django-mptt | django-treebeard |
Admin friendly | ||
Reparenting | Via signals, automatically | Explicit API calls required |
Forms support | (TreeNodeChoiceField, MoveNodeForm) | |
Template tags | Yes | No |
FIx/recompute existing tree | ||
Implementation details | django-mptt | django-treebeard |
Parent is ForeignKey based | (Only for AL) | |
Model preparation | mptt.register(MyModel) | class MyModel(NS_Node) |
Basic API feeling | my_instance.get_descendants() | my_instance.get_descendants() |
No comments.