IT干货网

json之以JSON格式返回QuerySet吗

davidwang456 2025年12月25日 编程设计 35 0

我正在Django 1.8中工作,无法找到实现此目标的现代方法。

这是我在Googling和this blog post的基础上得到的:

results = PCT.objects.filter(code__startswith='a') 
json_res = [] 
for result in results: 
    json_res.append(result.as_dict()) 
return HttpResponse(json.dumps(json_res), content_type='application/json') 

但是,这给了我 'PCT' object has no attribute 'as_dict'

肯定现在必须有一种更整洁的方法吗?

我想知道是否可以使用 JSONResponse,但令人沮丧的是,文档没有提供如何将JSONRespose与queryset一起使用的示例,这必须是最常见的用例。我已经试过了:
results = PCT.objects.filter(code__startswith='a') 
return JsonResponse(results, safe=False) 

这给出了 [<PCT: PCT object>, <PCT: PCT object>] is not JSON serializable

请您参考如下方法:

最简单的解决方案,无需任何其他框架:

results = PCT.objects.filter(code__startswith='a').values('id', 'name') 
return JsonResponse({'results': list(results)}) 

返回 {'results': [{'id': 1, 'name': 'foo'}, ...]}
或者,如果您只需要这些值:
results = PCT.objects.filter(code__startswith='a').values_list('id', 'name') 
return JsonResponse({'results': list(results)}) 

返回 {'results': [[1, 'foo'], ...]}


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!