在 Django / Wagtail 中导入/批量创建页面

Importing / bulk creating pages in Django / Wagtail

Wagtail 和 Django 是非常高效和复杂的框架,但它们不提供任何导入(即批量创建)页面的简单方法。我已经尝试了很多建议(eg 1, eg 2, , eg 4, etc). I've also tried CodeRedCMS (which is based on Wagtail), but it offers a very rudimentary function and I do not want to add additional dependencies. Gazmans solution in this post 似乎非常有效,但我无法弄清楚如何解决这个问题。

所以我的问题很简单:如果我有一个包含数千行的 csv/json 文件,其中每一行代表我创建的特定页面模型的 post在 Wagtail 中,如何将其导入 Wagtail? 任何带有伪代码的示例都将不胜感激。

我几乎成功的解决方案是 (1) 使用 DataGrip 并直接将数据导入 table,或 (2) 使用 loaddata 管理Django 中的命令。然而,这两种方法都导致 Wagtail 没有注册条目,这样我就可以验证它们存在于数据库 table 但不存在于父 table 并且在管理后端不可见,我相信是由于多table继承.

这里有一个食谱可以为您指明正确的方向:

https://gist.github.com/tomdyson/ef8c2f684620b84feaddfd7454e09647

这显示了为 Wagtail 创建示例 Film 页面模型,以及从下载的 CSV 文件创建约 35k 页面的管理命令。

您也可以查看我的 wagtail-fakenews app, which generates Wagtail pages with dummy content. It doesn't import from CSV, but it does include images and StreamField content (see make_fake_items.py),第一个食谱没有。