My favorites
▼
|
Sign in
django-mptt
Utilities for implementing Modified Preorder Tree Traversal
Project Home
Downloads
Wiki
Issues
Source
Export to GitHub
READ-ONLY: This project has been
archived
. For more information see
this post
.
Search
Search within:
All issues
Open issues
New issues
Issues to verify
for
Advanced search
Search tips
Subscriptions
Issue
23
attachment: tree.txt
(1.7 KB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
MPTT tree delete node test
==========================
>>> from mptt.exceptions import InvalidMove
>>> from mptt.tests.models import Category, Genre, Insert, Node, OrderedInsertion, Tree
>>> def print_tree_details(nodes):
... opts = nodes[0]._meta
... print '\n'.join(['%s %s %s %s %s %s' % \
... (n.pk, getattr(n, '%s_id' % opts.parent_attr) or '-',
... getattr(n, opts.tree_id_attr), getattr(n, opts.level_attr),
... getattr(n, opts.left_attr), getattr(n, opts.right_attr)) \
... for n in nodes])
>>> import mptt
>>> mptt.register(Genre)
Traceback (most recent call last):
...
AlreadyRegistered: The model Genre has already been registered.
# Creation ####################################################################
>>> test = Genre.objects.create(name='Test')
>>> test1 = Genre.objects.create(name='Test1', parent=test)
>>> test2 = Genre.objects.create(name='Test2', parent=test)
>>> test3 = Genre.objects.create(name='Test3', parent=test)
>>> test1_1 = Genre.objects.create(name='Test1_1', parent=test1)
>>> test1_2 = Genre.objects.create(name='Test1_2', parent=test1)
>>> test1_1_1 = Genre.objects.create(name='Test1_1_1', parent=test1_1)
>>> test2_1 = Genre.objects.create(name='Test2_1', parent=test2)
>>> print_tree_details(Genre.tree.all())
1 - 1 0 1 16
2 1 1 1 2 9
5 2 1 2 3 6
7 5 1 3 4 5
6 2 1 2 7 8
3 1 1 1 10 13
8 3 1 2 11 12
4 1 1 1 14 15
# Deletion ####################################################################
# Delete a node which has siblings and descendants
>>> test1 = Genre.objects.get(pk=test1.pk)
>>> test1.delete()
>>> print_tree_details(Genre.tree.all())
1 - 1 0 1 8
3 1 1 1 2 5
8 3 1 2 3 4
4 1 1 1 6 7
Powered by
Google Project Hosting