0

我的 FieldRowPanel 错了吗?

padding = FieldRowPanel([
        FieldPanel(blocks.ChoiceBlock(
        required=False, choices=PADDING_CHOICES, label="Отступ сверху")),
        FieldPanel(blocks.ChoiceBlock(
        required=False, choices=PADDING_CHOICES, label="Отступ снизу")),
    ], heading="Отступы")

我正在尝试在这个地方这样做:

class ContentBlockThemed(blocks.StructBlock):
    theme = blocks.ChoiceBlock(
        required=True, choices=BLOCK_THEMES_CHOICES, label="Тема")

    padding = FieldRowPanel([
        FieldPanel(blocks.ChoiceBlock(
        required=False, choices=PADDING_CHOICES, label="Отступ сверху")),
        FieldPanel(blocks.ChoiceBlock(
        required=False, choices=PADDING_CHOICES, label="Отступ снизу")),
    ], heading="Отступы")

    visible = blocks.BooleanBlock(required=False, label="Видимый", default=True, help_text="По умолчанию - True")

    block_content = ContentBlock()

    class Meta:
        icon = 'user'
        form_classname = 'content-block struct-block pages-content-block'
        template = 'wtblocks/content_block.html'

尽管没有错误,但管理员中没有显示任何内容

4

1 回答 1

1

这不是有效的代码。

  • blocks.ChoiceBlock仅在 StreamField 定义中有效
  • FieldRowPanel并且在 StreamField 定义FieldPanel无效,仅在模型的“面板”定义中有效
  • FieldPanel应该将字段名称作为字符串传递,而不是块对象

要控制 StructBlock 的编辑表单的布局(即相当于您在面板定义中使用 FieldRowPanel 的方式),您需要将该布局定义为 HTML 模板并将该模板设置为form_template块的 Meta 部分

于 2020-10-02T18:11:24.427 回答