我试图将一个字段添加到“升级”面板的现有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
?
答案 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
希望这会有所帮助!