使用序列化程序中的开箱即用字段,验证错误消息如下所示:
{
"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的当前方法使得这相当困难。查看代码,似乎目前不支持此类错误报告。但是,我正在寻找一种方法来覆盖错误处理以适应此模型。
答案 0 :(得分:1)
将类似内容添加到序列化程序中:
def is_valid(self, raise_exception=False):
try:
return super(ClientSerializer, self).is_valid(raise_exception)
except exceptions.ValidationError as e:
if 'email' in e.detail:
for i in range(len(e.detail['email'])):
if e.detail['email'][i] == UniqueValidator.message:
e.detail['email'][i] = {'code': 'not-unique'}
raise e