2017-10-17 1 views
0

でプログラムStreamBlockの子項目を追加します。は、私は下に次のStructBlockとStreamBlockを持つセキレイ

class AccordionItemBlock(StructBlock): 
    title = CharBlock() 
    text = RichTextBlock() 

class AccordionRepeaterBlock(StreamBlock): 
    accordion_item = AccordionItemBlock() 

私はプログラム的にこのページに追加し、複数の「アイテム」CharBlocksする必要があります。

class BasicPage(Page): 
    body = StreamField([ 
     ('accordion_repeater_block', AccordionRepeaterBlock()), 
    ], null=True) 

この私はそれに近づいている方法です

page.body = [ 
    (
     'accordion_repeater_block', 
     { 
      'accordion_item', 
      { 
       'title': 'Title goes here', 
       'text': RichText('Testing!'), 
      } 
     } 
    ) 
] 
provider.save() 

私は何を入れてもエラーになりますの後のecondultの値 'accordion_repeater_block'。任意のアイデアをどのようにこれを解決するには?

答えて

1

解決策を見つけました!ストリームブロックのインスタンスをブロックする必要があります。ストリームチャイルド:

from wagtail.wagtailcore.blocks.stream_block import StreamValue 

page.body = [ 
    ('accordion_repeater_block', 
     [ 
      StreamValue.StreamChild(
       id=None, 
       block=AccordionItemBlock(), 
       value={ 
         'title': 'Title goes here', 
         'text': RichText('Testing!'), 
       } 
      ), 
     ] 
    ) 
] 
page.save() 
関連する問題