python - DRF 序列化程序字段重命名为其在验证数据中的源

标签 python django django-rest-framework

我有一个 drf 序列化程序,其中有一个我想重命名的字段:

class UserBulkUploadSerializer(serializers.Serializer):
    ...
    is_admin = serializers.BooleanField(required=False, source='administrator')

但是,在 validated_data 属性中,它被重新命名为 source 属性值。我这样做:

serializer = UserBulkUploadSerializer(data=data)
serializer.is_valid()
return serializer.validated_data

那里没有 is_admin 键,它是 administrator

有没有办法克服这个问题并使其成为 validated_data 中的 is_admin

最佳答案

我认为您需要添加两个字段,一个只写字段和一个只读字段。 像这样:

class UserBulkUploadSerializer(serializers.Serializer):
    ...
    administrator = serializers.BooleanField(required=False)
    is_admin = serializers.BooleanField(read_only=True, source='administrator')

    extra_kwargs = {
        'administrator': {'write_only': True},
    }

我还没有能够测试这个,所以我不确定具有相同来源的两个字段是否会导致错误,否则你可以将 is_admin 更改为 SerializerMethodField。

关于python - DRF 序列化程序字段重命名为其在验证数据中的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023503/

相关文章:

css - 如何将 css 类添加到 Django 管理表单

python - Django REST 框架 : HTML render Generic APIView

python - Django 休息框架 : How serialize list of list?

python - JSON 解码字符串

python - 我如何在 Dask 分布式工作人员之间共享一个大型只读对象

python - Telegram.org API : calling method invokeWithLayer in Python

python - 从作为列表传递以进行查询的所有交易品种中返回数据(一个最新对象)

python - 运行 Django 测试时如何查看标准输出?

python - 在 Windows 上的 Python 3.5 上安装 Django-channels 时出错

python - 如何使用 Django Tables 2 有条件地渲染链接列?