django - wagtail:在创建时将页面添加为父页面的第一个子页面
问题描述
我试图将创建的列表页面添加为父索引页面的第一个子页面。问题是,当我使用 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')
解决方案
TreeBeard API 解决方案: 您只需要通过父节点的兄弟节点或子节点来更改目标节点,而不是父节点本身。
Pythonic解决方案: 您可以交换页面ID(主键),首先创建您的页面,然后创建一个检查所有ID并指示您新创建的页面ID的函数,然后将最低ID号更改为等于最后一个孩子(这是您新创建的页面)+ 1,然后将您的页面 ID 更改为 1 或 0..!
注意:如果你需要重新排列整个页面,你最好在终端使用--fix-tree管理命令(如:python manage.py fixtree),然后按照上面提到的步骤,你也可以创建一个递归函数来一次完成以上所有操作..!我会故意让其他开发人员有机会帮助您使用递归函数示例(除非您可以自己做)..!
推荐阅读
- list - 如何将函数应用于列表的两个元素 - Haskell
- html - 如何将 sjTable 保存为 .png 图像文件?
- python - Leetcode 133. 用 dfs 理解 Clone Graph
- php - 店面覆盖自定义寄存器?
- r - 在 R 中过滤一个火炬数据集
- css - 使用 CSS 禁用高亮
- istio - 是否可以在同一命名空间中使用特使代理的工作负载和另一个没有特使代理的工作负载之间进行通信?
- python - 定位和拉伸 Matplotlib floating_axes.FloatingSubplot Axis
- user-interface - GUI框架的多进程架构
- c++ - 使用C++,如何将上面的多个\n变成只有一个\n?