我的模型类可以包含多棵树。
class MyClass(MPTTModel, AbstractClass):
"""
"""
name = models.CharField(_('name'), max_length=255)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
***
我想我可以做:
nodes = MyClass.objects.filter(tree_id=1)
并使用:
nodes.get_root(), nodes.get_children(), etc,
但是我有
str: 'QuerySet' object has no attribute 'get_root'
读取DOC“ MPTTModel的子类具有以下实例方法:*”
如何在一个模型类中使用具有多个树的方法?
谢谢!
最佳答案
您正在queryset上调用get_root()
和其他方法。相反,您需要在模型实例上调用它们。要通过id
获取实例,请使用get()
:
node = MyClass.objects.get(tree_id=1)
node.get_root()
或者,如果您是filtering multiple objects,请遍历结果查询集:
nodes = MyClass.objects.filter(some_conditions)
for node in nodes:
node.get_root()
关于python - django-mptt多个树和queryset,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24168025/