在FieldPanel中传递标题和help_text参数在admin

时间:2019-10-10 21:11:18

标签: python django wagtail

我想拥有字段标签(又称标题)和特定于我的子类页面的帮助文本。考虑以下models.py代码:

from django.db import models
from wagtail.core.models import Page
from wagtail.admin.edit_handlers import FieldPanel

class BlogPostPage(Page):
    body = models.TextField(blank=False)
    author = models.CharField(blank=True, help_text="Name of the person who wrote this post.")

    content_panels = Page.content_panels + [
        FieldPanel("author", help_text="Custom help text that should appear in the admin")
        FieldPanel("body", heading="Post body", help_text="Some more custom help text")
    ]

    promote_panels = [
        # ...
        FieldPanel("search_description", heading="Page description", help_text="A short summary of the page")
    ]

当我尝试通过传递上述代码中的参数来覆盖FieldPanel的{​​{1}}(标签)和/或heading时,甚至使用基数{ {1}}类(例如help_text),除非我在字段声明中更改了Pagesearch_description参数或两者都更改,否则Wagtail管理员中的那些部分不会更新。

但是,对于label字段,我尝试通过help_text更改其帮助文本,如another question中所述。但这不符合我的需求,因为它替换了所有 Wagtail页面(包括子类页面)中该字段的search_description

因此,我决定深入研究BlogPostPage._meta的来源,并在help_text下找到this

wagtail.admin.edit_handlers

上面的代码翻译为:FieldPanel总是分别从字段def on_form_bound(self): self.bound_field = self.form[self.field_name] self.heading = self.bound_field.label self.help_text = self.bound_field.help_text 的{​​{1}}设置FieldPanelself.heading的参数,并忽略上述参数。这样可以防止self.help_text覆盖它们。但是我worked around通过继承label并将其子类用于上述面板来实现。

事实证明,在https://github.com/wagtail/wagtail/issues/161之前的GitHub问题中对此进行了讨论。

为什么help_text(以及models.py)采用这种方式设计?

0 个答案:

没有答案