如何更改我的表单中显示的字段的名称

时间:2016-02-11 03:00:00

标签: python django

我已完成项目,但我想更改在forms.py中显示的字段的名称。例如,在我的表单中,人们可以用名为" name"的形式写一些东西。但是我想改变这个" name"到"标题"。我怎么做到这一点?

目前在我的forms.py

class PostForm(forms.ModelForm):

    name = forms.CharField(max_length=128, help_text="plz enter")

    url = forms.URLField(max_length=200,
                         help_text="Please enter the URL of the page.", required=False)
    views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    class Meta:
        model = Post
        widgets = {
            'category':Select2Widget,
        }
        exclude = ['pub_date', 'moderator', 'rank_score','slug', 'image', 'thumbnail']

和我的models.py

class Post(models.Model):
    category = models.ForeignKey(Category)

和url字段。

在我的html文件中,我做了

 {{ form|crispy }}

说,我想将类别更改为社区,并命名为Title,我该怎么做?我正在考虑将这些更改为本地化,因为我真正想要做的只是将英语翻译成其他语言。但由于某种原因,它不起作用。在forms.py标记我唯一的选择?

1 个答案:

答案 0 :(得分:1)

你应该(如你所说)通常使用forms.py上的label参数来更改显示给用户的标签

from django.utils.translation import ugettext_lazy as _

class PostForm(forms.ModelForm):
    name = forms.CharField(
        label=_('Title'),
        ...
    )
    ....

除了在表单上使用label之外,您还可以在模型上使用verbose_name

class Post(models.Model):
    category = models.ForeignKey(Category, verbose_name=_('Community'))

请注意,更改模型字段的verbose_name将影响Django管理员显示字段的方式,以及使用此模型的任何模型表单中的默认标签。

对于国际化(i18n) - 您应该参考documentation。简而言之,您需要对应翻译的字符串执行以下操作:

from django.utils.translation import ugettext_lazy as _

# if the translation data exists
_('This string will be translated')