如何更改窗体中显示的字段的名称

2024-04-26 10:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经完成了这个项目,但是我想更改在my forms.py中显示的字段的名称。例如,在我的表单中,人们可以用一个名为“name”的表单来写东西,但是我想把这个“name”改成“title”。我如何做到这一点

当前在my 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']

在我的模特里

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

以及url字段

在我的html文件中,我知道

 {{ form|crispy }}

比如说,我想把Category改成Community,把name改成Title,我该怎么做?我想把这些改成本地化,因为我真正想做的只是把英语翻译成其他语言。但不知为什么它不起作用。在forms.py中添加标签是我唯一的选择吗


Tags: thetextnamepyurl表单myhelp
1条回答
网友
1楼 · 发布于 2024-04-26 10:48:03

您应该(如您所说)通常使用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 admin显示字段的方式,以及使用此模型的任何模型窗体中的默认标签

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

from django.utils.translation import ugettext_lazy as _

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

相关问题 更多 >