如何以编程方式将内容添加到Wagtail StreamField?

时间:2015-12-10 11:34:21

标签: django wagtail

我正在从旧网站进行迁移,我需要以编程方式将原始html添加到Wagtail页面上的StreamField。我该怎么做?

1 个答案:

答案 0 :(得分:18)

最简单的方法是确保在RawHTMLBlock上启用StreamField,然后将其插入其中。向该字段添加内容的过程如下:

import json

original_html = '<p>Hello, world!</p>'

# First, convert the html to json, with the appropriate block type
raw_json = json.dumps([{'type': 'raw_html', 'value': original_html}])

# Load Wagtail page
my_page = Page.objects.get(id=1)
# Assuming the stream field is called 'body',
# add the json string to the field
my_page.body = raw_json
my_page.save()

您可以使用此方法将其他类型的块添加到StreamField - 只需确保创建具有相应块类型的字典列表,将其转换为json并保存。