Мое приложение должно сортировать корневые узлы, сохраняя тот же порядок дочерних элементов.
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 с циклами кажется подверженным ошибкам и не снижает производительность.