我有一个序列化程序,它根据其他字段的值验证字段,在错误响应中,我希望将每个字段错误显示为一个字段错误,而不是显示"NON_FIELD_ERROR"下的所有内容(如果我在对象级验证方法中引发ValidationError,则会发生这种情况).以下是我试图实现的目标的插图:

MySerializer(ModelSerializer):
    ...
    def validate(self, data):
        field_val1 = data['field_val1']
        field_val2 = data['field_val2']
        if not self._is_field_valid(field_val1, field_val2):
            # The below line is how I would do what I want with Django
            # Forms, however, it's not valid in DRF
            self._errors['field_val1'] = 'this field is not valid'

所需的错误响应为:

{'field_val1': ['this field is not valid']}

推荐答案

我发现了这一点,在"BaseSerializer"部分的this页文档中,有一个示例显示ValidationError可以在初始化时接受字典参数.

如果I为raise ValidationError({'field_val1': ['this field is not valid']}),我会得到我想要的JSON响应.

Django相关问答推荐

DRF中是否有有效的更新有序数据的算法?

Django:我的上下文变量不能用于重复的for循环

django优化查询

如何在Django查询集中查询多对多字段内是否存在实例

Django中每个类型/代理的最新行

Django Form标签和action属性

Django 相当于子查询

有谁知道是否可以将您的 Django Heroku 应用程序放到 App Store/Google Play 上?

在 PyCharm 中运行 Django 测试

Django PositiveIntegerField 中的 0 值?

如何在 Django 中向 ModelForm 添加外键字段?

在 Django 中舍入小数点

Django中的自定义排序

Django 应用程序中的版本号

Django 发送邮箱

刷新时重新提交的django表单

'function' 对象没有属性 'as_view'

UpdateView 中的success_url,基于传递的值

Django中reverse()和reverse_lazy()的区别

Django 模型方法 - create_or_update