假设我有一个序列化器,它具有较低的以 Camel 命名的字段,我必须通过约定来保留这些字段:
class SomeSerializer(serializers.Serializer):
someField = serializers.CharField()
我有下面的数据要序列化,我想在snake的情况下保留键名称,以遵循惯例:
data = {'some_field': 'I love python'}
我希望序列化程序从dict some_field键的值填充其someField
serialized_data = SomeSerializer(data=data)
serialized_data.is_valid()
serialized_data.data['someField'] == 'I love python'
我已经试过了:
DRF串行器源代码-似乎适用于基于模型的串行器?
DRF串行化器方法字段-似乎很难应用时,有几个不同格式的字段-字符字段,日期字段,intfields和所有我需要的只是从dict拉值
自定义渲染器-但它们是在序列化后应用的,验证将失败并影响整个视图
还有别的建议吗?
2条答案
按热度按时间c9x0cxw01#
可以使用
serializers.SerializerMethodField()
从字典中获取值,而不是使用serializers.CharField()
。s71maibg2#
看起来您的客户端应用程序以camelCase发送数据,但您希望处理为python方言。
首先我要你创建
camel_case_to_snake_case
函数然后:
让序列化程序保持这样
但是重写了序列化器中的
to_internal_value
方法。使它看起来像那样