【问题标题】:add_error(fieldname, ...) in Django Rest Framework (DRF)Django Rest Framework (DRF) 中的 add_error(fieldname, ...)
【发布时间】: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 在休息框架中。 这里有什么合适的成语?

【问题讨论】:

    标签: django django-rest-framework django-forms


    【解决方案1】:

    简单!

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

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

    在哪里可以找到它

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2017-11-09
      • 1970-01-01
      • 2022-07-29
      • 2015-07-08
      • 2020-05-01
      相关资源
      最近更新 更多