[Fixed]-How can I programmatically add content to a Wagtail StreamField?

24πŸ‘

βœ…

The easiest way to do this is to make sure that RawHTMLBlock is enabled on your StreamField, and then insert it there. The process for adding content to the field is as follows:

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()

You can use this approach to add other kinds of blocks to the StreamField – just make sure you create a list of dictionaries with the appropriate block type, convert it to json, and save.

πŸ‘€seddonym

Leave a comment