I'm using django-mptt 0.4.2, and want to rebuild a tree.
The tree manager has a method rebuild() which I try to access like this:
>>> my_rootnode = MyObj.objects.get(id=12)
>>> my_rootnode.tree.rebuild()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 211, in __get__
raise AttributeError("Manager isn't accessible via %s instances" % type.__name__)
AttributeError: Manager isn't accessible via MyObj instances
I'm obviously doing this wrong. How should I access the rebuild method?
work for me:
MenuItem.objects.rebuild()
AttributeError: Manager isn't accessible via MyObj instances
mptt Manager
inherits from django.db.models.Manager
which can not be accessed via model instances but only via model classes. More infos:Retrieving objects
The model class here is MyObj
. You are using a model instance my_rootnode
the correct usage is:
MyObj.tree.rebuild()
(documentation link)
this will build MyObj tree.
Recent MPTT version seem to require the following command. At least it worked for me today, although dash in front indicates that tree manager is private, and probably should not be accessed directly:
MyObj._tree_manager.rebuild()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With