前提・実現したいこと
Wagtail(DjangoCMS)で簡単なウェブアプリケーションを開発しています。block.pyを作成し、適宜そこから必要な要素を抜いてmodels.pyに入れています。そのblockの一つにTitleAndTextBlockというものを設定しました。そこからタイトルのみを抜き出し、アコーディオンのタイトルとし、テキストはその説明として抜き出したいです。以下の場合、もう一度blockをタイトルとテキストの二つに定義しなおし、それぞれ{{ self.title }}などで書くしかないのでしょうか?
発生している問題・エラーメッセージ
エラーメッセージは特にありません。
該当のソースコード
python
1#block.py 2class TitleAndTextBlock(blocks.StructBlock): 3 title = blocks.CharBlock(required=True, help_text ="Add your title") 4 text = blocks.TextBlock(required=True, help_text="Add text") 5 6 class Meta: 7 template = "streams/title_and_text_block.html" 8 icon = "edit" 9 label = "Title & Text"
python
1#home/models.py 2class HomePage(Page): #RoutablePageMixin 3 """Home page model.""" 4 template = "home/home_page.html" 5 max_count = 1 6 custom_title = models.CharField(max_length=100, blank=False, null=True) 7 custom_subtitle = RichTextField(features=["bold", "italic"]) 8 9 content = StreamField( 10 [ 11 ("title_and_text", blocks.TitleAndTextBlock()), 12 ("full_richtext", blocks.RichtextBlock()), 13 ("simple_richtext", blocks.SimpleRichtextBlock()), 14 ("cta", blocks.CTABlock()), 15 ], 16 null=True, 17 blank=True 18 ) 19 20 content_panels = Page.content_panels + [ 21 MultiFieldPanel( 22 [ 23 FieldPanel("custom_title"), 24 FieldPanel("custom_subtitle"), 25 ], 26 heading="Banner Options", 27 ), 28 MultiFieldPanel( 29 [ 30 InlinePanel("carousel_images", max_num=5, min_num=1, label="Image"), 31 ], heading="Carousel Images" 32 ), 33 MultiFieldPanel( 34 [ 35 StreamFieldPanel("content"), 36 ], heading="Accordion text") 37 ]
html
1 2 <div id="home_about" class="about"> 3 {% for block in self.content %} 4 <div class="accordion-item"> 5 <h2 class="accordion-header" id="headingOne"> 6 <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> 7 {{ self.block.title }} 8 </button> 9 </h2> 10 <div id="collapseOne" class="accordion-collapse collapse " aria-labelledby="headingOne" data-bs-parent="#accordionExample"> 11 <div class="accordion-body"> 12 <strong>{% include_block block %}</strong> 13 </div> 14 </div> 15 </div> 16 {% endfor %} 17 </div> 18 </div>
試したこと
{% for block in self.content %}の移動
追記
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。