Трясогузка: Добавление страницы в качестве первого дочернего элемента родительской страницы при создании
Я пытаюсь добавить созданную страницу списка в качестве первого дочернего элемента родительской страницы Index. Проблема в том, что когда я использую django treebeard api django treebeard api иногда это удается, но в других случаях появляется ошибка:
{'path': ['Страница с таким путем уже существует']}
.
Как я могу решить эту проблему?
КОД:
@receiver(post_save, sender=ListPage)
def move_page(sender, instance, **kwargs):
instance.move(instance.get_parent(), pos='first-child')
Решение API TreeBeard: вам просто нужно изменить целевой узел на дочерний или дочерний узел родительского узла, а не на сам родительский узел.
Питоническое решение: Вы можете поменять местами ID страницы (первичный ключ), сначала создайте свою страницу, затем создайте функцию для проверки всех ID и укажите ID вашей вновь созданной страницы, затем измените наименьший номер ID, чтобы он был равен последнему ребенку (который является вашей вновь созданной страницей) + 1, а затем измените ID вашей страницы на 1 или 0...
ПРИМЕЧАНИЕ: если вам нужно переставить все страницы, лучше использовать команду управления --fix-tree в терминале (например: python manage.py fixtree), а затем выполнить шаги, указанные выше, вы также можете создать рекурсивную функцию для выполнения всего вышеперечисленного одновременно...! Я намеренно оставляю возможность другим разработчикам помочь вам с примером рекурсивных функций (если вы не можете сделать это самостоятельно)...