Python DRF序列化程序字段重命名为它';验证数据中的源
我有一个drf序列化程序,其中有一个要重命名的字段:Python DRF序列化程序字段重命名为它';验证数据中的源,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个drf序列化程序,其中有一个要重命名的字段: class UserBulkUploadSerializer(serializers.Serializer): ... is_admin=serializers.BooleanField(必需=False,source='administrator') 但是,在validated\u数据属性中,它被重命名回源属性值。我正在这样做: serializer=UserBulkUploadSerializer(data=data) 序列化程序。_是
class UserBulkUploadSerializer(serializers.Serializer):
...
is_admin=serializers.BooleanField(必需=False,source='administrator')
但是,在validated\u数据
属性中,它被重命名回源
属性值。我正在这样做:
serializer=UserBulkUploadSerializer(data=data)
序列化程序。_是否有效()
返回serializer.validated\u数据
这里没有是\u 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。我已经深入研究了DRF源,似乎没有干净的解决方案。
validated\u数据
attribute只是不用于处理此问题。
数据
属性的输出将带有重命名的键。是的,我已经做了一些类似这样的黑客操作,只是通过编程方式替换了键,但我想知道我是否缺少了一些关于序列化器字段的内容,以及是否可以以某种干净的方式修复它。在我的问题示例中,我在传入的数据中有administrator
字段:serializer=UserBulkUploadSerializer(data=data)
我希望它在序列化程序输出中被翻译成is\u admin
。因此,提供source
属性感觉是实现这一点的一种合乎逻辑的方式,但它并没有像我期望的那样工作_(ツ)_/“等等,我现在很困惑。该字段在传入数据上称为administrator,在您的模型上称为administrator,但您希望它在传出数据上称为is_admin?还是在您的模型上也称为is_admin?在模型上称为administrator
,在传出数据上称为is_admin