我从http://docs.djangoproject.com/en/dev/ref/models/fields/文档中了解到,您可以将error_messages添加到模型字段并提供自己的错误消息字典。然而,你要传的命令的关键是什么?
class MyModel(models.Model):
some_field = models.CharField(max_length=55, error_messages={'required': "My custom error"})
但是,如果在所使用的modelform上更容易做到这一点,那么它也可以工作。我宁愿不必显式地创建每个字段及其类型。这就是我试图避免的:
class MyModelForm(forms.ModelForm):
some_field = forms.CharField(error_messages={'required' : 'Required error'})
**更新2:**我的项目中使用的测试代码
我的型号:
class MyTestModel(models.Model):
name = models.CharField(max_length=127,error_messages={'blank' : 'BLANK','required' : 'REQUIRED'})
我的表格:
class EditTestModel(ModelForm):
class Meta:
model = MyTestModel
我的观点:
tf = EditTestModel({'name' : ''})
print tf.is_valid() # prints False
print tf.full_clean() # prints None
print tf # prints the form, with a <li> error list containg the error "This field is required"
<tr><th><label for="id_name">Name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input id="id_name" type="text" name="name" maxlength="127" /></td></tr>
3条答案
按热度按时间yrefmtwq1#
你说得对,那些文件没什么用。毕竟是最近才加的!
我猜error_messages的正常用法是用于ModelForms,所以我在这里查找每个字段的可接受错误键列表:www.example.com http://docs.djangoproject.com/en/dev/ref/forms/fields/#error-messages
但是如果你想真正的安全而不是假设任何事情
目前最可靠的方法是查看
django/db/models/fields/__init__.py
处的源代码,您将看到可以指定的每个default_error_messages
以及对self.error_messages['invalid']
的实际调用下面是模型验证的文档:www.example.com http://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects
更新:
刚刚在shell会话中测试了这个,它似乎正在工作。怎么了?
我只定义了一个简单的模型:
mum43rcc2#
(Bit这一次很晚了,但我自己也经历过同样的问题,所以把这作为给自己的一个提示就像任何事情一样。)
您可以在模型和模型形式上指定
error_messages
。您应该/可以使用的键在这里为表单字段定义。对我来说,问题似乎是表单和相关模型之间的相互关系,以及何时出现错误消息。关键是要理解表单和模型实际上是非常松散耦合的,并且没有魔法发生。如果您有一个名为'quote'的模型字段,其max_length为140,并且模型表单与此模型相关联,则错误消息将如下所示:
is_valid()
或errors
),返回的错误消息将来自模型。因此--总结起来相当简单--错误消息Map到正在验证的对象--它可以是模型或modelform。
nfzehxib3#
我试过了。如果你在模型中定义它,它将不起作用。您必须在表单中定义
error_messages
,如下所示