提高模型清洁方法中的字段错误

Zar*_*doz 5 python django django-models

如何ValidationException在 django 的模型clean方法中提高字段边界?

from django.core.exceptions import ValidationError

def clean(self):
    if self.title:
        raise ValidationError({'title': 'not ok'})
Run Code Online (Sandbox Code Playgroud)

以上没有将错误添加到title字段(使用表单时),而是添加到非字段错误 ( __all__)。

我知道如何在表单 ( self._errors['title'] = self.error_class([msg])) 中执行此操作,但self._errors在模型clean方法中不存在。

Neb*_*sar 7

根据 Django 文档,这可以使用 model.clean()

这提供了您所要求的一切!

注释上方的框似乎是您要查找的内容:

raise ValidationError({
    'title': ValidationError(_('Missing title.'), code='required'),
    'pub_date': ValidationError(_('Invalid date.'), code='invalid'),
})
Run Code Online (Sandbox Code Playgroud)

code 参数是一个 kwarg,因此是可选的。(它在示例中,所以我已将其粘贴过来)

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

raise ValidationError({
    'title': ValidationError('not ok'),
})
Run Code Online (Sandbox Code Playgroud)