更改 django 在显示表单错误消息时使用的字段名称

Posted

技术标签:

【中文标题】更改 django 在显示表单错误消息时使用的字段名称【英文标题】:changing the field name django uses when display form error messages 【发布时间】:2013-09-30 11:04:41 【问题描述】:

好的,我有一个表格,然后在模板中,我有这个代码:

% if form.errors %
     form.errors %
% endif %

现在,假设我的表单中有一个用户名字段是必需的,但我故意不填写它。它会说

username
    -This field is required

如何更改它在告诉错误消息的字段时显示的单词“用户名”?我猜它的名字取自我创建的模型,因为在模型中(然后我制作了一个表格)我已经写了

username = models.CharField(max_length=10)
first_name = models.CharField(max_length=20)

如你所见,如果 first_name 字段有错误,django 会显示

first_name
    - *error message*

如何让它显示“名字”而不是“名字”?

【问题讨论】:

你考虑过在你的模型上使用 verbose_name 属性吗?你喜欢 first_name = models.CharField(max_length=20, verbose_name="First Name") 为什么在 max_length 值中使用引号? 我尝试使用verbose_name,但由于某种原因它不起作用..它应该起作用吗?我认为模板忽略了verbose_name,这就是它不起作用的原因..它应该起作用吗?因为如果是这样,那么我的代码的另一部分可能有问题导致 verbose_name 不起作用。 @FernandoFreitasAlves 抱歉,max_length 不应该用引号引起来。 【参考方案1】:

如果您想在错误中添加一些自定义消息,您可能需要修改表单域的 clean 方法。

例如:

class Form(forms.ModelForm):
    class Meta:
        model = User #Assuming User is the name of your model
        fields = ['username','first_name']

    def clean_first_name(self):
        if condition: # A condition that must raise an error
            raise forms.ValidationError(u'Your Custom Validation Error goes here.')
        return self.cleaned_data['first_name']

但如果您只想更改默认错误消息中显示的名称,您可以在字段中输入详细名称,就像:

username = models.CharField(max_length=10, verbose_name="Username")
first_name = models.CharField(max_length=20, verbose_name="First Name")

或隐含:

username = models.CharField("Username", max_length=10)
first_name = models.CharField("First Name",max_length=20)

要了解有关 django 表单和字段验证的更多信息:https://docs.djangoproject.com/en/1.5/ref/forms/validation/#form-and-field-validation

关于覆盖默认表单错误消息: Django override default form error messages

http://davedash.com/2008/11/28/custom-error-messages-for-django-forms/

【讨论】:

嗯好吧.. 有没有一种方法/地方可以查看 django 对于字段为 CharField 的表单的所有默认错误消息?例如,我知道如果该字段是必需的,因此如果未填写该字段将会出现错误消息。但是有没有办法查看 django 什么时候会返回错误消息?这样,我可以自定义所有可能的错误消息......另外,你是从哪里了解到“if condition: raise forms.ValidationError...”等的?有没有链接可以让我了解如何使用它? 我现在在答案中附加了参考资料。 嗨@FernandoFreitasAlves 我遇到了冗长名称的问题。这似乎不起作用。请看这个狙击手。 pastebin.com/w6UkjzHF 谢谢!

以上是关于更改 django 在显示表单错误消息时使用的字段名称的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Django 表单显示的默认错误消息

使用 Angular 提交表单时更改类并显示消息

Django,模型和表单:替换“此字段为必填项”消息

如何防止引导验证在表单提交之前显示错误消息?

在 Django 模板中使用 form.as_ul 时控制表单错误显示。

Django 1.4 - 在元字段 Model=User 的表单中向用户字段添加自定义错误消息