当我们serialize python model object
嵌套json data
时,我们可以在django中对其进行序列化,作为敌人的例子。
DataSerializer(data_list, many=True)
输出将是这样。
[
{"name":"user_1", "id":1},
{"name":"user_2", "id":2},
{"name":"user_3", "id":3},
... ...
]
现在,我想立即将json object
的列表反序列化为python model object
。
例如:
# 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)
我做什么。
# 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)
这就是为什么我可以访问请求正文user_data.id
的值user_data.name
和{"name":"user_1", "id":1}
但是我该如何一次处理数据列表,就像我们通过传递参数DataSerializer(data_list, many=True)
一次进行序列化一样。
答案 0 :(得分:0)
只需在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
但我不明白您为什么要反序列化。我认为在django中不建议这样做。