DjangoRestFramework修改serializer的field的错误信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010377372/article/details/81742198

需求

默认的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',
                                }
                            )

猜你喜欢

转载自blog.csdn.net/u010377372/article/details/81742198