我已完成项目,但我想更改在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标记我唯一的选择?
答案 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')