需求
默认的serializer每个field返回的都是默认的信息,全是英文的,并且即使使用了国际化翻译,翻译内容也不尽人意,可能需要定制化修改,例如
{
"aa": [
"This field is required."
],
"bb": [
"This field is required."
],
"cc": [
"Invalid pk \"23\" - object does not exist."
]
}
解决方案:
通过再serializer中传递error_messages参数来达到修改的目的,拿ModelSerializer来举例
class AA(serializers.ModelSerializer):
class Meta:
model = AA
fields = (
'aa', )
extra_kwargs = {
'aa': {
'error_messages': {
'required': 'aa不能为空',
'does_not_exist': 'aa不存在',
'incorrect_type': '请输入aa的id',
}
}
}
注意上面的aa属于 PrimaryKeyRelatedField 所以会有does_not_exsit等外键相关的属性,所以即使是自定义修改也需要找到所有错误类型,才可以做到完美解决返回的需求
如果使用的是Serializer,那么只需要再自定义field时传入error_messages即可
例如
aa = PrimaryKeyRelatedField(...,
'error_messages': {
'required': 'aa不能为空',
'does_not_exist': 'aa不存在',
'incorrect_type': '请输入aa的id',
}
)