DRF序列化器字段在验证数据中重命名为其源

时间:2019-09-20 07:15:14

标签: 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

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

2 个答案:

答案 0 :(得分:1)

我想您将要添加两个字段,一个是只写字段,另一个是只读字段。 像这样:

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。

答案 1 :(得分:0)

我已经探究了DRF的来源,似乎对此没有干净的解决方案。
validated_data属性并非旨在解决此问题。
data属性的输出将带有重命名的键。