I am trying to get the objects of all the children of a given node on Django with django-mppt
I have a model designed as shown below, the classes/categories (node) with the same indent level defines siblings, inner indents are children. The objects tagged with a category are shown just below the category (node). The objects start with a -
symbol. The numbers along the classes/categories (nodes) are the ids.
all the nodes are the instances of Category
class with the id
given.
high school (1)
class 8 (2)
division a (3)
-Billie
-Tre
-Mike
division b (4)
-Patrik
-Pete
-Andy
class 9 (3)
division a (8)
-Mark
-Tom
-Travis
division b (5)
-Gerard
-Frank
-Mikey
class 10 (4)
division a (6)
-Hayley
-Jeremy
-Taylor
division b (7)
-Steven
-Slash
-Izzy
I can get the query sets of a specific node this way,
>>> Category.objects.get(pk=7).product_set.all()
[Steven, Slash, Izzy]
>>> Category.objects.get(pk=4).product_set.all()
[Mark, Tom, Travis]
How do I query with pk=1
, pk=2
, pk=3
or pk=4
to get all the child objects?
example,
the query for pk=2
query must return
[Billie, Tre, Mike, Patrik, Pete, Andy]
Category.objects.get(pk=2).get_descendants(include_self=True)
This will get you all category descendants including self.
Assuming that your Product model has a Foreign key category, you can use:
Product.objects.filter(category__in=Category.objects.get(pk=2)\
.get_descendants(include_self=True))