在迁移中移动 Wagtail 页面

2023-12-24

我正在重组我的 Wagtail 应用程序,以删除其中仅包含单个项目的 IndexPage,并将该项目移至当前 IndexPage 父级的子级。

基本上是从这个开始:

Page--| |--IndexPage--| |--ChildPages(其中只有 1 个)

to this:

Page--| |--ChildPage

我对模型进行了更改,以便使用此结构来创建新内容,并修复相关视图以直接指向 ChildPage。但现在我想将当前数据迁移到新结构,但我不知道如何去做...理想情况下,这将在迁移中完成,这样我们就不必手动进行任何操作。

有没有办法在迁移过程中以编程方式将这些 ChildPage 在树上移动?


不幸的是,有一个硬性限制(可能)排除了在迁移中进行页面树调整的可能性:诸如插入、移动和删除页面之类的树操作是作为Page模型,并且在迁移中您只能访问该模型的“虚拟”版本,这只能让您访问数据库字段和基本 ORM 方法,而不是那些自定义方法。

(您也许可以通过放置来解决这个问题from wagtail.wagtailcore.models import Page在您的迁移中并使用它而不是标准Page = apps.get_model("wagtailcore", "Page")方法,但我不建议这样做 - 如果迁移在迁移序列中的某个点运行,则很容易中断Page模型仍在构建中,与模型的“真实”状态不匹配。)

相反,我建议写一个Django管理命令 https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/进行树操作 - 在管理命令中is安全进口Page来自 wagtailcore 的模型,以及您的特定页面模型。Page提供了一个方法move(target, pos)哪个有效根据 Treebeard API http://django-treebeard.readthedocs.io/en/latest/api.html#treebeard.models.Node.move- 移动子页面的代码可能类似于:

from myapp.models import IndexPage

# ...
for index_page in IndexPage.objects.all():
    for child_page in index_page.get_children():
        child_page.move(index_page, 'right')
    index_page.delete()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在迁移中移动 Wagtail 页面 的相关文章

  • 无法使用 Django 3.0.3 中的迁移 API 来使用 ModelState 和 ProjectState 进行迁移

    我正在使用 ProjectState 迁移到表的新属性 我试图了解 Django 3 0 3 中迁移 API 的 ModelState 和 ProjectState 使用 我无法迁移到有新字段的新州 有人可以帮我吗ProjectState
  • Django 使用 AWS ECS Fargate 迁移部署策略?

    使用 ECS Fargate 运行数据库迁移的建议部署策略是什么 我可以在启动 Gunicorn 服务器之前更新容器命令以运行迁移 但如果配置了多个实例 这可能会导致并发迁移同时执行 我还必须考虑图像已经在运行的事实 如果我弄清楚如何在新映
  • Django storages S3 - 存储现有文件

    我有 django 1 11 和最新的 django storages 使用 S3 后端进行设置 我正在尝试使用 AWS 图像链接作为起点 以编程方式实例化图像文件 我无法弄清楚如何通过查看源代码 文档来做到这一点 我假设我需要创建一个文件
  • 从 S3 wagtail 提供静态文件和媒体文件

    我们将开始使用 S3 来托管我们的静态和媒体文件 有谁有一个很好的链接来描述如何用鹡鸰做到这两点 我们正在使用 Wagtail 1 9 我无法让他们两个同时工作 https wagtail io blog amazon s3 for med
  • 在 Django 1.7 中运行单元测试时禁用迁移

    Django 1 7介绍数据库迁移 https docs djangoproject com en 1 7 topics migrations 在 Django 1 7 中运行单元测试时 它强制migrate 这需要很长时间 所以我想跳过
  • MySQL 与 PostgreSQL?我应该为我的 Django 项目选择哪个?

    我的 Django 项目将由一个包含数十万个条目的大型数据库支持 并且需要支持搜索 我可能最终会使用 djangosearch 或类似的项目 哪个数据库后端最适合我的项目 为什么 您能推荐一些好的资源供进一步阅读吗 不管怎样 Django
  • Django 项目中的迁移目录是否应该推送到 git 存储库?

    在 Django 项目中 当模型更改时 迁移文件也会更改 如果我将迁移目录添加到 git 这会引起其他人的冲突 如果我不添加它 有时在迁移时会引发服务器错误 你怎么解决这个问题 来自姜戈迁移文档 https docs djangoproje
  • 运行“python manage.py migrate”命令时 Django 中出现 ValueError

    我需要向 Django 添加更多字段User模型 所以我创建了一个自定义模型类 名为Accounts在一个名为accounts 扩展了 Django 的抽象用户 class 之后我更新了我的设置 py文件 定义AUTH USER MODEL
  • 如何更改 django wagtail 的管理徽标

    我正在做一个小项目 我想我会付出wagtail http wagtail io 尝试一下 我现在想知道如何更改侧边栏中 wagtail 的管理徽标 下图左上图 我可以改变 static wagtailadmin images wagtail
  • 无法将整数类型转换为 uuid

    我试着跑python3 manage py migrate 但我得到了这个error File Library Frameworks Python framework Versions 3 8 lib python3 8 site pack
  • Django:操作错误没有这样的表

    我正在使用 Django CMS 的 Django 项目中构建一个相当简单的应用程序 Research 这是我对项目 应用程序的第一次尝试 它的主要目的是存储各种知识资产 即研究人员撰写的文章 书籍等 问题是当我将浏览器指向 researc
  • 在 Wagtail 中创建可重用字段集的方法?

    我正在评估 Wagtail 看看是否能在我的公司中找到它与 Wordpress 和 Drupal 一起的位置 到目前为止 我认为它很有趣并且非常喜欢其中的很多内容 但是有一件事我真的很喜欢 但找不到方法来实现 我的商店使用模式库 原子设计
  • 链接到 Wagtail CMS 中的特定页面

    在 Wagtail CMS 中 我不知道如何构建指向特定页面的链接 我想要我的模板中有一个 固定的 未创作的 链接BlogIndexPage to my BlogIndexArchivePage反之亦然 在官方文档中pageurl http
  • 如何在 Django 1.7 中重置迁移

    我知道有一个与此相同的标题 但问题不同 我设法使我的开发机器迁移和生产迁移不同步 我有一个使用 South 的 Django 应用程序 我有自己的工作流程 运行良好 这可能不是正确的做事方式 但我没有遇到任何问题 基本上我有一个脚本将生产数
  • Django 1.7 中的迁移

    我目前正在参与一个使用 Django 1 7 开发版本的项目 我想使用 makemigrations 和 migrate 将我在模型中所做的更改 添加字段 删除模型等 传播到数据库模式中 命令 我向应用程序中的模型之一添加了 年龄 字段 c
  • 从 shell 添加/修改 wagtail 流场中的块值

    我有一个页面 其中包含一个 StreamField 正文和一个名为 HeadingBlock 的自定义块 class HeadingBlock blocks StructBlock heading blocks CharBlock cssi
  • Django 1.7 makemigrations 将表重命名为 None

    我必须将一些模型从一个应用程序移动到另一个应用程序 并且我按照此答案中的说明进行操作https stackoverflow com a 26472482 188614 https stackoverflow com a 26472482 1
  • 如何在ModelAdmin中使用InlinePanel?

    我正在设置一个需要使用多个子模型实例创建的模型 我希望能够在管理界面中编辑和创建此模型 因此我使用以下命令添加它ModelAdmin http docs wagtail io en v1 9 reference contrib modela
  • 如何将自定义迁移添加到外部 Django 应用程序

    我已经在我的自定义 Django 1 10 应用程序中对一些第三方应用程序进行了一些猴子修补 现在 当我尝试创建初始迁移时 它还会为这些外部应用程序生成迁移 但它将这些迁移放在我的 virtualenv 的站点中 packages 目录 无
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库

随机推荐