我的 Wagtail 项目中有几个应用程序,其中之一是“新闻”,其中包含新闻(页面)。我想在管理中将标题的标签“标题”覆盖为“标题”。
News._meta.get_field("title").verbose_name = "Headline"
结果,我在所有应用程序和页面中获得了所有标题的“标题”标签。为什么我会出现这种奇怪的效果?
UPDATE:
# news/models.py
class NewsDetails(Page):
template = "news/news_details.html"
news_text = RichTextField(features=['h2', 'h3', 'bold', 'italic', 'link', 'ol', 'ul',])
news_image = models.ForeignKey(
"wagtailimages.Image",
null=True,
blank=False,
on_delete=models.SET_NULL,
)
content_panels = Page.content_panels + [
ImageChooserPanel("news_image"),
FieldPanel("news_text")
]
class Meta:
verbose_name = "News"
parent_page_types = ['news.NewsList']
NewsDetails._meta.get_field("title").verbose_name = "Headline"
对内森的答案稍作修改,解决了瓦莱里的问题verbose_name
不工作。放title.label
而不是title.verbose_name
:
class NewsDetailsForm(WagtailAdminPageForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Manually edit the default form's title attributes:
title = self.fields['title']
title.label = "Headline"
title.help_text = "Some headline..."
原因是我们现在处理的是 django.forms.Field 而不是 django.db.models.Field。请参阅中的代码django.db.models.Field.formfield()
:
def formfield(self, form_class=None, choices_form_class=None, **kwargs):
"""Return a django.forms.Field instance for this field."""
defaults = {
'required': not self.blank,
'label': capfirst(self.verbose_name),
'help_text': self.help_text,
}
...
return form_class(**defaults)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)