如何在django的模型ValidationException
方法中引发字段绑定clean
?
from django.core.exceptions import ValidationError
def clean(self):
if self.title:
raise ValidationError({'title': 'not ok'})
以上内容不会将错误添加到title
字段(使用表单时),而是添加到非字段错误(__all__
)。
我知道如何在表单(self._errors['title'] = self.error_class([msg])
)中执行此操作,但模型self._errors
方法中不存在clean
。
答案 0 :(得分:4)
根据Django文档,这可以使用 model.clean()
这提供了你要求的一切!
笔记上方的框似乎是您要找的内容:
raise ValidationError({
'title': ValidationError(_('Missing title.'), code='required'),
'pub_date': ValidationError(_('Invalid date.'), code='invalid'),
})
代码参数是kwarg,因此是可选的。 (它在示例中,所以我已将其粘贴)
在你的情况下,我猜你需要这样的东西:
raise ValidationError({
'title': ValidationError('not ok'),
})
答案 1 :(得分:3)
您没有,Model
的干净方法仅用于提升non field errors
,但您可以通过创建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.
"""