如何将字段添加到默认的“提升”面板的“多字段”

时间:2019-07-17 14:19:59

标签: django panel wagtail

我试图将一个字段添加到“升级”面板的现有MultiField中。

在我的Page子类中,我对此进行了设置:

slug_en = models.SlugField(
        verbose_name='slug (EN)',
        allow_unicode=True,
        max_length=255,
        help_text="The name of the page as it will appear in URLs e.g http://example.com/blog/[my-slug]/"
    )

...

Page.promote_panels[0].children.insert(1, FieldPanel('slug_en'))

我尝试使用默认的“标题”字段代替此自定义字段,并且确实有效。

服务器返回错误:

django.core.exceptions.FieldError: Unknown field(s) (slug_en) specified for Page

问题应该是由于某种原因该字段当时尚未初始化。

如何将字段成功添加到Page.promote_panel

1 个答案:

答案 0 :(得分:0)

您可以尝试重新创建TabbedInterface(这是在编辑页面时创建选项卡的原因)。

from wagtail.admin.edit_handlers import (
    FieldPanel,
    MultiFieldPanel,
    ObjectList,
    TabbedInterface,
)
from wagtail.core.models import Page


class YourPage(Page):
    ....


YourPage.edit_handler = TabbedInterface(
    [
        ObjectList(YourPage.content_panels, heading="Content"),
        ObjectList(
            [
                MultiFieldPanel([
                    FieldPanel('slug'),
                    FieldPanel('seo_title'),
                    FieldPanel('show_in_menus'),
                    FieldPanel('search_description'),
                    Field("custom_field_1"),
                    Field("custom_field_2"),
                ], 'Common page configuration'),
            ],
            heading="Promote",
        ),
        ObjectList(YourPage.settings_panels, heading="Settings"),
    ],
)

如果您有兴趣了解更多信息,请访问video on this subject on YouTube

希望这会有所帮助!