wagtail:在创建时将页面添加为父页面的第一个子页面

wagtail: Adding page as the first child of the parent page on creation

我正在尝试将创建的列表页添加为父索引页的第一个子页。问题是,当我使用 django treebeard api django treebeard api 时,它有时会成功,但有时会显示错误:

{'path': ['Page with this Path already exists.']}

我该如何解决这个问题?

代码:

@receiver(post_save, sender=ListPage)
def move_page(sender, instance, **kwargs):
    instance.move(instance.get_parent(), pos='first-child')

TreeBeard API 解决方案: 您只需要通过 parent 节点的同级或 child 来更改目标节点,而不是 parent 节点本身。

Python 解决方案: 您可以交换页面 ID(主键),首先,创建您的页面,然后创建一个函数来检查所有 ID 并指示您新创建的页面 ID,然后将最小的 ID 号更改为等于最后一个 child (这是您新创建的页面)+ 1 然后将您的页面 ID 更改为 1 或 0..!

注意:如果您需要重新排列整个页面,最好在终端中使用--fix-tree管理命令(例如:python manage.py fixtree),然后执行上面提到的步骤,你也可以创建一个递归函数来一次完成以上所有操作..! 我会故意让其他开发人员有机会帮助您处理递归函数示例(除非您可以自己完成)..!