gpt4 book ai didi

django - 如何在Django中的模型上使用error_messages

转载 作者:行者123 更新时间:2023-12-04 10:57:45 29 4
gpt4 key购买 nike

我从http://docs.djangoproject.com/en/dev/ref/models/fields/文档中了解到,您可以将error_messages添加到模型字段并提供自己的错误消息字典。但是,您应该通过的dict的关键是什么?

class MyModel(models.Model):
some_field = models.CharField(max_length=55, error_messages={'required': "My custom error"})

但是,如果更容易在使用的模型表单上执行此操作,则也可以。我宁愿不必再次创建显式创建的每个字段及其类型。这是我想避免的事情:
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>

最佳答案

没错,这些文档不是很有用。毕竟这是最近添加的!

我的猜测是error_messages的正常用法是用于ModelForms,所以我会在这里查找每个字段可接受的错误键列表:http://docs.djangoproject.com/en/dev/ref/forms/fields/#error-messages

但是,如果您想真正安全并且不承担任何责任...

到目前为止,最可靠的方法是查看django/db/models/fields/__init__.py的源代码,在这里您将看到可以指定的每个default_error_messages和对self.error_messages['invalid']的实际调用

# Field (base class)

default_error_messages = {
'invalid_choice': _(u'Value %r is not a valid choice.'),
'null': _(u'This field cannot be null.'),
'blank': _(u'This field cannot be blank.'),
}

# AutoField
default_error_messages = {
'invalid': _(u'This value must be an integer.'),
}

这是有关模型验证的文档:
http://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects

更新:

刚刚在shell session 中对此进行了测试,它似乎可以正常工作。这是怎么回事?

我只是定义了一个简单的模型:
class SubscriptionGroup(models.Model):
name = models.CharField(max_length=255, error_messages={'blank': 'INVALID!!11', 'null': 'NULL11!'})

# shell
>>> s = SubscriptionGroup()
>>> s.full_clean()
ValidationError: {'name': [u'INVALID!!11']}

关于django - 如何在Django中的模型上使用error_messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798322/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com