Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在模型清理方法中提高场误差_Python_Django_Django Models - Fatal编程技术网

Python 在模型清理方法中提高场误差

Python 在模型清理方法中提高场误差,python,django,django-models,Python,Django,Django Models,如何在django的modelsclean方法中引发字段绑定的ValidationException from django.core.exceptions import ValidationError def clean(self): if self.title: raise ValidationError({'title': 'not ok'}) 上述内容不会将错误添加到标题字段(使用表单时),而是添加到非字段错误(\uuuuuuuuuuuuuuuuuuuuuuu

如何在django的models
clean
方法中引发字段绑定的
ValidationException

from django.core.exceptions import ValidationError

def clean(self):
    if self.title:
        raise ValidationError({'title': 'not ok'})
上述内容不会将错误添加到
标题
字段(使用表单时),而是添加到非字段错误(
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


我知道如何在表单中执行(
self.\u errors['title']=self.error\u class([msg])
),但是
self.\u errors
在模型
clean
方法中不存在。

你不知道,
Model
的clean方法只用于引发
非字段错误,但是,您可以通过创建
clean_title
方法引发字段错误

def clean(self):
    """
    Hook for doing any extra model-wide validation after clean() has been
    called on every field by self.clean_fields. Any ValidationError raised
    by this method will not be associated with a particular field; it will
    have a special-case association with the field defined by NON_FIELD_ERRORS.
    """

根据Django文档,使用

这提供了你所要求的一切

便笺上方的框似乎就是您要查找的内容:

raise ValidationError({
    'title': ValidationError(_('Missing title.'), code='required'),
    'pub_date': ValidationError(_('Invalid date.'), code='invalid'),
})
代码参数是kwarg,因此是可选的。(它在示例中,因此我已将其粘贴在上面)

在你的情况下,我猜你需要这样的东西:

raise ValidationError({
    'title': ValidationError('not ok'),
})

是的,我也试过了。但它似乎必须使用
验证程序=[clean_title]
连接到字段本身,因此必须在字段之前定义
clean_title
(或者必须导入)。不太方便。这个答案应该被接受。但是,您不需要在第二个ValidationError中包装错误消息,一个空字符串可以正常工作。