序列化Django模型实例(带有values标记的查询集)
我正在尝试序列化以下视图序列化Django模型实例(带有values标记的查询集),django,json,Django,Json,我正在尝试序列化以下视图 def headerimage(request): service_view = list( Service_images.objects.filter(service='7')) return render_to_response ('headerimage.html',{'service_view':service_view}, context_instance=RequestContext(request)) 这应该以如下所示的形式返回JSON {"fol
def headerimage(request):
service_view = list( Service_images.objects.filter(service='7'))
return render_to_response ('headerimage.html',{'service_view':service_view}, context_instance=RequestContext(request))
这应该以如下所示的形式返回JSON
{"folderList":
["with schmurps"],
"fileList":
["toto006.jpg",
"toto012.jpg",
"toto013.jpg"
]
}
然而,文件夹列表可以是一个,或者在这种情况下将是“7”,因为这是图像的标题(“文件夹”)
在考虑了下面的答案后,我想出了
def headerimage(request):
service_view = Service_images.objects.filter(service='7')
image = serializers.serialize("json", service_view)
mini = list(serializers.deserialize("json", image))
return HttpResponse(image, mimetype='application/javascript')
然而,我仍然在寻找最简单的方法来做到这一点
service_view = Service_images.objects.filter(service='7').values('image')
问题是django序列化程序需要整个模型服务\u images.objects.filter()将为您返回一个QuerySet对象,因此将其包装到list()中基本上没有意义
查看文档:,并使用其中定义的LazyEncoder。当json格式要求与我的模型表示不匹配时,我通常遵循以下方法
from django.utils import simplejson as json
def headerimage(request):
service_view = Service_images.objects.filter(service='7')
ret_dict = {
"folderList":
[sv.image.folder for sv in service_view],
"fileList":
[sv.image.file for sv in service_view]
}
return (json.dumps(ret_dict), mimetype="application/json")
我修改了这个问题,添加了关于我试图做什么的附加查询。