【发布时间】:2015-01-26 17:49:13
【问题描述】:
在序列化程序中使用开箱即用的字段,验证错误消息如下所示:
{
"product": [
"This field must be unique."
],
"price": [
"This field is required."
]
}
但是,对于我正在编写的 API,我想为每个失败的验证提供一个唯一的错误代码,以便客户端可以以编程方式响应验证错误,或者可以在 UI 中提供他们自己的自定义消息。理想情况下,错误 json 看起来像这样:
{
"product": [
{
"code": "unique",
"message": "This field must be unique."
}
],
"price": [
{
"code": "required",
"message": "This field is required."
}
]
}
当前使用 ValidationErrors 的方法使这变得相当困难。查看代码,目前似乎不支持这种类型的错误报告。但是,我正在寻找一种方法来覆盖错误处理以适应此模型。
【问题讨论】:
-
您能否覆盖
Serializer.is_valid方法,捕获ValidationError,并更改它添加到错误字典的方式?这是假设 DRF 或 Django 添加了您正在寻找的code值。 -
让我猜猜:你正在使用新表单 (github.com/insin/newforms)
-
其实有讨论在DRF中嵌入这样的支持,见github.com/tomchristie/django-rest-framework/pull/3169
标签: django validation django-rest-framework