2015-12-10 9 views

risposta

13

Il modo più semplice per eseguire questa operazione è assicurarsi che RawHTMLBlock sia abilitato su StreamField e quindi inserirlo lì. Il processo per l'aggiunta di contenuti al campo è la seguente:

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

È possibile utilizzare questo metodo per aggiungere altri tipi di blocchi per il StreamField - solo assicurarsi di creare un elenco di dizionari con il tipo di blocco del caso, convertire a JSON, e salva.

+0

Si noti che almeno in Wagtail 1.5 non è necessario utilizzare una stringa JSON creata da una matrice di dizionari. Puoi invece usare direttamente una serie di tuple, in questo modo: 'my_page.body = [('raw_html', original_html)]' – CoreDumpError

Problemi correlati