Django Rest Framework (DRF) 中的 add_error(fieldname, ...)

Posted

技术标签:

【中文标题】Django Rest Framework (DRF) 中的 add_error(fieldname, ...)【英文标题】:add_error(fieldname, ...) in Django Rest Framework (DRF) 【发布时间】:2021-08-10 12:56:19 【问题描述】:

我有一个这样的模型序列化器:

class MySerializer(ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('myfield', 'otherfield')

我需要检查一个跨域条件,例如x.myfield > x.otherfield。 (实际上有几个otherfields和几个条件。)

我需要详细且易于理解的人类可读错误消息。 我目前通过raise ValidationError(message)MySerializer.validate() 中生成它们(实际上只是第一个),但随后消息出现在non-field-errors 键下,这对用户来说是丑陋和困难的。将它附加到myfield 会更好。

在 Django 表单中,我会使用 add_error('myfield', ...),但我 could not find a similar thing 在休息框架中。 这里有什么合适的成语?

【问题讨论】:

【参考方案1】:

简单!

raise ValidationError(dict(myfield=[message]))

这样,一个人可以整体提及多个字段,并且每个字段可以有多个消息。

在哪里可以找到它

截至 2021-05 年,相关信息归于 Overriding serialization and deserialization behavior 在文档中,而不是像人们想象的那样在“验证”下。

(为什么在我最终在文档中找到我要查找的内容之前,我经常必须写一篇几乎完整的 *** 帖子?我不知道。希望它现在对其他人有所帮助。)

【讨论】:

以上是关于Django Rest Framework (DRF) 中的 add_error(fieldname, ...)的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证

怎么安装django rest framework

django rest framework中文介绍

17-Django-Django REST framework-REST framework及RESTful简介

为啥 django-rest-framework 不显示 OneToOneField 数据 - django

Django:rest framework之分页(Pagination)