我的模型类可以包含多棵树。

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/

10-12 18:29