在django中QuerySet格式不能被json格式化处理传到前端,因此在处理此类数据时有两种方法:
1.Django序列化对象:serializers
from django.core import serializers
data = serializers.serialize("序列化格式",QuerySet )
如果只想要序列化一部分字段,序列化指定的字段参数
data=serializers.serialize("json",Book.objects.all(),fields=('name','price')
2.将QuerySet转换成字典或列表格式
ret=Book.objects.all().values("caption")
ret=list(ret)
result=json.dumps(ret)
json.dumps时无法处理datetime日期,可通过自定义的处理器来扩展
3.反序列化数据:deserialize
ret=serializers.deserialize("xml", data) 返回的是迭代器
deserialize迭代器返回的对象不是简单的Django对象。
相反,它们是包装已创建但未保存的对象和任何关联关系数据的特殊DeserializedObject实例。
调用DeserializedObject.save()将对象保存到数据库
for deserialized_object in serializers.deserialize("xml", data):
if object_should_be_saved(deserialized_object):
deserialized_object.save()