【发布时间】:2021-10-02 16:12:08
【问题描述】:
我使用 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
我尝试发送包含下一个数据的 put 请求:
{
"id":1,
"context": {
"floor_field": 27,
"square2": 222,
"oneAs": "Hello"
}
}
在序列化程序中,我预计会这样:
{'id': 1, 'context': {'floor_field': 27, 'square2': 222, 'oneAs': 'Hello'}}
但是得到了:
{'id': 1, 'context': {'floor_field': 27, 'square_2': 222, 'one_As': 'Hello'}}
如何禁用此行为?
【问题讨论】:
标签: django serialization django-rest-framework django-serializer