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 两因素身份验证
17-Django-Django REST framework-REST framework及RESTful简介