如何根据要添加的模型的字段将 InlinePanel 子项(“字段 1”)上的标签设置为值?
我的模特:
class FormField(AbstractFormField):
label = models.CharField(
blank=True,
verbose_name=_("label"),
max_length=255,
help_text=_("The label of the form field"),
)
field_type = models.CharField(
verbose_name="field type",
max_length=16,
choices=(("section", "Section"),) + FORM_FIELD_CHOICES,
)
page = ParentalKey(
'ContactPageBase',
on_delete=models.CASCADE,
related_name='form_fields',
)
和联系表格页面:
class ContactPageBase(WagtailCaptchaEmailForm, BasePage):
...
content_panels = AbstractEmailForm.content_panels + [
FieldPanel('contact_intro'),
InlinePanel('form_fields', heading=_('Form fields'), label=_("Field")),
FieldPanel('thank_you_text')
]
我知道标签可以像上面那样编辑,但这是针对 InlinePanel 中的整个子集,但我想在标签中显示类似“{FormField.field_type} - {FormField.label}”的内容,以便在右侧概述。如何才能实现这一目标?
要根据要添加的模型的字段动态设置 InlinePanel 子项上的标签,您可以重写 FormField 模型中的 str 方法。
class FormField(AbstractFormField):
...
def __str__(self):
return f"{self.get_field_type_display()} - {self.label}"
class ContactPageBase(Page):
...
content_panels = [
FieldPanel('contact_intro'),
InlinePanel('form_fields', label=_("Field")),
FieldPanel('thank_you_text')
]