[英]How we can deserialize the nested json object into python model object at once?
When we serialize python model object
to nested json data
we can serialize it in django as foe example. 当我们
serialize python model object
嵌套的json data
我们可以在django中将其序列化为敌人的例子。
DataSerializer(data_list, many=True)
and output will like that. 输出会像那样。
[
{"name":"user_1", "id":1},
{"name":"user_2", "id":2},
{"name":"user_3", "id":3},
... ...
]
Now I want to deserialize the list of json object
to python model object
at once. 现在,我想立即将
json object
的列表反序列化为python model object
。
As for example: 例如:
# the serializer class
class UserSerilizer(serializers.Serializer):
id = serializers.IntegerField(required=True)
name = serializers.CharField(required=True)
# Request model class.
class UserRequestModel:
id = None
name = None
def __init__(self, dictionary):
self.__dict__.update(dictionary)
And what I do. 和我做什么。
# serialize the request data for param validation
user_serializer = UserSerilizer(data=request.data)
# update the user request model with validate data
user_data = UserRequestModel(user_serializer.validated_data)
That's why I can access the value user_data.id
and user_data.name
for the request body {"name":"user_1", "id":1}
这就是为什么我可以访问请求正文
{"name":"user_1", "id":1}
的值user_data.id
和user_data.name
的原因
But how can I do it for list of data at once like we serialize at once with passing parameter DataSerializer(data_list, many=True)
. 但是我该如何一次处理数据列表,就像我们通过传递参数
DataSerializer(data_list, many=True)
一次序列化一样。
Just append deserialize
method in your Serializer
class 只需在您的
Serializer
类中附加deserialize
Serializer
方法
class UserSerializer(serializers.Serializer):
id = serializers.IntegerField(required=True)
name = serializers.CharField(required=True)
@classmethod
def deserialize(cls, data, many=False):
if many is False:
return UserRequestModel(data)
else:
obj_list = []
for d in data:
obj_list.append(UserRequestModel(d))
return obj_list
But I can not understand why you want to deserialize. 但是我不明白为什么要反序列化。 I don't think this is recommended in django.
我认为在Django中不建议这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.