我用的是djangorestframework==3.9.4,我不明白为什么drf会改变序列化数据(在数字和大写前给字段名加下划线)
# views.py:
class RetrieveUpdateJsonFields(mixins.RetrieveModelMixin,mixins.UpdateModelMixin,viewsets.GenericViewSet):
queryset = JsonFieldObject.objects.all()
serializers = {
'default': JsonFieldRetriveSerializer,'update': JsonFieldUpdateSerializer,}
def get_serializer_class(self):
return self.serializers.get(self.action,self.serializers['default'])
# serializers.py:
class JsonFieldUpdateSerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
context = serializers.JSONField()
class Meta:
model = JsonFieldObject
fields = ('id','context')
def validate(self,data):
""" for trace """
print(data["context"])
return data
我尝试发送包含下一个数据的放置请求:
{
"id":1,"context": {
"floor_field": 27,"square2": 222,"oneAs": "Hello"
}
}
在序列化程序中,我期望:
{'id': 1,'context': {'floor_field': 27,'square2': 222,'oneAs': 'Hello'}}
但得到:
{'id': 1,'square_2': 222,'one_As': 'Hello'}}
如何禁用此行为?