【问题标题】:How do I assign an edit panel for a StructBlock in Wagtail?如何在 Wagtail 中为 StructBlock 分配编辑面板?
【发布时间】:2020-04-10 00:52:22
【问题描述】:

我有一个这样的结构块:

class JumbotronBlock(blocks.StructBlock):
fullwidth= blocks.BooleanBlock(requried=False, help_text="Full width of the viewport")
heading= blocks.CharBlock(required=True, help_text="Heading for the jumbotron")
lead= blocks.CharBlock(required= False, help_text= "Lead text for Jumbotron")
link= LinkBlock(required=False)
bg_image= ImageChooserBlock(required=False)
bg_color= blocks.CharBlock(required=False, help_text="Hex value for background color")
classes= blocks.CharBlock(required=False, help_text="CSS classes for jumbotron")
styles= blocks.CharBlock(required=False, help_text="Custom style definitions for jumbotron")

class Meta:
    template="streams/jumbotron_block.html"
    icon= "placeholder"
    label= "Jumbotron"

我的主页类模型是这样的:

class HomePage(Page):
template= "home/home_page.html"
header= Jumbotron()

body =  StreamField([
    ('Richtext', RichTextBlock()),
    ('CTA', CTABlock()),
    ('Section', SectionBlock()),
    ])

content_panels = Page.content_panels + [
    ??which panel here??('header'),
    StreamFieldPanel('body'),
    ]

我应该使用哪个面板将 Jumbotron 添加到编辑面板?谢谢。

【问题讨论】:

    标签: wagtail wagtail-streamfield


    【解决方案1】:

    StructBlock 不能用作模型字段 - 它仅在 StreamField 内有效。您需要在 HomePage 模型中将 jumbotron 块的字段定义为 Django model fields,并且 - 如果您想在编辑视图中直观地将它们组合在一起 - 将它们放在 MultiFieldPanel 中。

    【讨论】:

    • 谢谢。这一定是我找不到它独立包含在文档中的原因。我会试一试,稍后再回来选择您的答案作为解决方案。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多