Для работы с иерархической структурой использую django mptt.
Возникла проблема при копировании элементов. Так как тут не работает bulk create, не знаем будущего идентификатора объекта, приходиться создавать элементы в цикле.
Чем больше данных, тем больше времени, ресурсов используется.
Знаю, что нет 100% правильного решения. Может есть какие либо варианты с помощью которых можно ускорить работу копирования.
сейчас это выглядит упрощенно вот так
def copy_node(node, parent):
new_node = TreeStructure(
parent=parent
name=node.name
)
new_node.save()
for child in node.children.all():
self.copy_node(child, new_node)
return new_node
with transaction.atomic():
with TreeStructure.tree.delay_mptt_updates():
new_node = self.copy_node(node, parent)