更改 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 在显示表单错误消息时使用的字段名称的主要内容,如果未能解决你的问题,请参考以下文章