2015-12-10 3 views

ответ

13

Самый простой способ сделать это - убедиться, что 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, и сохранить.

+0

Обратите внимание, что по крайней мере Wagtail 1.5 вам не нужно использовать строку JSON, созданную из массива словарей. Вместо этого вы можете напрямую использовать массив кортежей, например: my_page.body = [('raw_html', original_html)] ' – CoreDumpError

Смежные вопросы