Передача параметров заголовка и help_text в FieldPanel ничего не делает в админке - PullRequest
0 голосов
/ 11 октября 2019

Я хочу иметь метки полей (или заголовки) и текст справки, относящийся к моим подклассам. Рассмотрим следующий код 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 heading (метка) и / или help_text, передав параметры, как в приведенном выше коде, - илидаже с существующими полями из базового класса Page, такими как search_description, эти части в администраторе Wagtail не будут обновляться, пока я не изменю параметр label или help_text или оба в объявлениях полей.

Для поля search_description я попытался изменить его текст справки на BlogPostPage._meta, как уже описано в другой вопрос . Но это не соответствовало моим потребностям, потому что оно заменило help_text для этого поля на всех страницах трясогузки, включая подклассы.

Поэтому я решил поискать источник wagtail.admin.edit_handlers и найдено this в 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

Приведенный выше код транслируется так: FieldPanel всегда устанавливает self.heading и self.help_text из поля label дляhelp_text параметров соответственно и игнорирует вышеупомянутые параметры. Это мешает models.py переопределить их. Но я обошел , создав подкласс FieldPanel и используя вместо этого этот подкласс для вышеуказанных панелей.

Также оказалось, что это обсуждалось в проблеме GitHub ранее: https://github.com/wagtail/wagtail/issues/161.

Есть ли причины, по которым FieldPanel с (а также ChooserPanel с) спроектированы таким образом?

...