django-mptt 多棵树与查询集

1 投票
1 回答
2067 浏览
提问于 2025-04-18 09:27

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

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'

阅读文档“ MPTTModel 的子类具有以下实例方法:*

我该如何在一个模型类中使用多个树的方法呢?

谢谢!

1 个回答

1

你现在是在对一个叫做 queryset 的东西调用 get_root() 和其他方法。其实,你应该在模型实例上调用这些方法。要通过 id 获取实例,可以使用 get() 方法:

node = MyClass.objects.get(tree_id=1)
node.get_root()

或者,如果你想要 筛选多个对象,可以对得到的 queryset 进行循环:

nodes = MyClass.objects.filter(some_conditions)
for node in nodes:
    node.get_root()

撰写回答