python - 在模型的 `clean` 方法中引发与字段关联的 ValidationError

标签 python django django-models

如何在 Django 的模型 clean 方法中引发字段绑定(bind) ValidationException

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 方法中不存在。

最佳答案

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

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

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

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

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

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

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

关于python - 在模型的 `clean` 方法中引发与字段关联的 ValidationError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633813/

相关文章:

python - 将 GEO 数据库与普通数据库分离

python - 创建debian包,将python脚本安装到Ubuntu的/usr/local/bin下

python名称错误名称未定义

python - 无法获取要呈现的页面。 Django

python - 使用 django 从远程提供可下载文件(巨大)

python - 用于外键反向查找的django db_index

python - Scrapy 不改变代理

python - 迭代 ManyToMany 字段 Django

python - 在Sqlite3中选择

python - Django 多个用户配置文件 - 在管理中内联显示用户字段