我有一个 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/