我有一个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
?
答案 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
属性的输出将带有重命名的键。