django-mptt多个树和查询集

时间:2014-06-11 16:29:46

标签: python django django-mptt

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

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的子类具有以下实例方法: *

如何在一个模型类中使用具有多个树的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在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()