如何强制 django ModelForm 使用模型中的“verbose_name”作为标签?

How to force django ModelForm to use `verbose_name` from the model as a label?

代码片段:

[models.py]

class News(models.Model):
    title = models.TextField(verbose_name=u"Tytuł")

[forms.py]

class NewsForm(forms.ModelForm):
    title = forms.CharField(
        widget=forms.TextInput(attrs={'class': 'form-input'}), required=True)
    class Meta:
        model = News
        fields = (
            'title',
        )

如何强制表单中的标签使用 verbose_name 而不是 title

我猜想可以通过 label=here_some_geeky_way_of_accessing_fields_meta_and_greping_verbose_name 在每个字段中 link 它,但我认为应该可以用更简单的方式实现...

如果您想覆盖该字段的默认小部件,那么您可以使用表单元数据的 widgets 属性:

class NewsForm(forms.ModelForm):

    class Meta:
        model =News
        fields = ('title', )
        widgets = {
            'title': forms.TextInput(attrs={'class': 'form-input'}),
        }

在这种情况下,您不需要重新定义表单域。 ModelForm 将从模型定义中获取详细名称和 required 标志。