有没有一种方法可以覆盖FieldPanel上的标签和帮助文本?

时间:2019-08-13 17:02:36

标签: wagtail

我想更改管理界面中某些Page字段的帮助文本和标签。看来通常FieldPanel会从模型字段中拾取标签和帮助文本,但是由于我想更改Page模型(title和{ {1}},特别是),我无法在字段本身上设置search_descriptionverbose_name

我尝试将help_textheading关键字参数传递给help_text,但是我仍然在管理界面中看到默认标签和帮助文本。

FieldPanel

3 个答案:

答案 0 :(得分:2)

有一种方法可以逐个字段覆盖默认的help_text和标签(称为verbose_name)。

MyPage._meta.get_field("title").help_text = "Help me Obi-Wan, you're my only help_text"
MyPage._meta.get_field("title").verbose_name = "Jedi Labelling"

enter image description here

有这种方法。然后还有丹·斯温(Dan Swain)在回答中很好地介绍了MultiFieldPanel的heading

如果所有方法都不奏效,总会有the HelpPanelhttp://docs.wagtail.io/en/v2.6.1/reference/pages/panels.html#helppanel

中的文档提供了更多信息

如果您喜欢从视频中学习,我也围绕这个主题创建了a YouTube video

希望这会有所帮助!

答案 1 :(得分:0)

我不知道将帮助文本直接添加到单个字段的简单方法,但是您可以将这些字段包装在MultiFieldPanel中,然后放在标题上: / p>

class MyPage(Page):
    content_panels = [
        MultiFieldPanel([
            FieldPanel('title', heading='Name', classname='full'),
            FieldPanel('search_description', heading='Description',
                       classname='full',
                       help_text='Description used in indices and search results')
        ], heading="your help text")
    ]

wagtail.core.models.py中,您将看到:

from django.utils.translation import ugettext_lazy as _

class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase):
    title = models.CharField(
        verbose_name=_('title'),
        max_length=255,
        help_text=_("The page title as you'd like it to be seen by the public")
    )

由于Page不是抽象类,因此即使尝试重新定义Page,也要在自己基于title的类中can't override的字段。另外,请注意先导入ugettext_lazy as _,然后再导入_('title')声明中的verbose_nameThis answer解释说,这段代码正在获取title的{​​{1}}的翻译版本。

答案 2 :(得分:0)

@KalobTaulien在Wagtail Slack中的建议似乎可以解决问题:

class MyPage(Page):
    pass

MyPage._meta.get_field('title').verbose_name = 'name'
MyPage._meta.get_field('search_description').help_text = 'Description used in indices and search results'