Riv*_*diz 10 python django mptt tree-traversal django-mptt
我试图用django-mppt获取Django上给定节点的所有子节点的对象
我有一个如下所示设计的模型,具有相同缩进级别的类/类别(节点)定义兄弟,内部缩进是子.标有类别的对象显示在类别(节点)下方.对象以-
符号开头.类/类别(节点)中的数字是ids.
所有节点都是Category
具有id
给定的类的实例.
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
Run Code Online (Sandbox Code Playgroud)
我可以通过这种方式获取特定节点的查询集,
>>> Category.objects.get(pk=7).product_set.all()
[Steven, Slash, Izzy]
>>> Category.objects.get(pk=4).product_set.all()
[Mark, Tom, Travis]
Run Code Online (Sandbox Code Playgroud)
我怎样查询pk=1
,pk=2
,pk=3
或pk=4
让所有的子对象?
例,
查询的pk=2
查询必须返回
[Billie, Tre, Mike, Patrik, Pete, Andy]
Run Code Online (Sandbox Code Playgroud)
Teb*_*ing 19
Category.objects.get(pk=2).get_descendants(include_self=True)
Run Code Online (Sandbox Code Playgroud)
这将为您提供包括自我在内的所有类别后代.
假设您的产品型号具有外键类别,您可以使用:
Product.objects.filter(category__in=Category.objects.get(pk=2)\
.get_descendants(include_self=True))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5919 次 |
最近记录: |