在django-mptt中排序根节点

时间:2018-11-05 21:20:46

标签: django django-mptt

我的应用程序需要对子节点进行排序,并保持子顺序相同。

MyModel.objects.all().ordered_by('field')对所有节点进行排序,使其无法正常工作。

使用MyModel.objects.root_nodes()重建时排序的mptt.managers.TreeManager.get_queryset_descendants()查询集将再次使用tree_id进行排序,以使其返回到先前的状态。

到目前为止,我已经设法对它进行了排序,将QuerySet转换为列表并附加了根节点,其后代是这样的:

root_nodes = sorted(Entry.objects.root_nodes(), ...)
qs = []
for node in root_nodes:
    qs.append(node)
    qs.extend(node.get_descendants())

我的问题是,是否有更好的,非侵入性的方法可以使用已排序的根节点来重建TreeQuerySet?由于使用循环重建QuerySet似乎容易出错并且对性能不友好。

0 个答案:

没有答案