Return QuerySet as JSON?
我在Django1.8工作,很难找到现代的方法来做到这一点。
这就是我得到的,基于谷歌和这个博客帖子:
1 2 3 4 5 | 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') |
然而,这给了我一个(0)。
现在一定有更整洁的方法吗?
我想知道是否可以使用JSONResponse,但令人沮丧的是,文档没有给出如何将JSONResponse与查询集一起使用的示例,而查询集必须是最常见的用例。我尝试过:
1 2 | results = PCT.objects.filter(code__startswith='a') return JsonResponse(results, safe=False) |
号
这给了
没有任何附加框架的最简单解决方案:
1 2 | results = PCT.objects.filter(code__startswith='a').values('id', 'name') return JsonResponse({'results': list(results)}) |
返回
或者如果您只需要这些值:
1 2 | results = PCT.objects.filter(code__startswith='a').values_list('id', 'name') return JsonResponse({'results': list(results)}) |
号
返回EDOCX1[1]
使用values()返回querydict,并将其传递给json.dumps
1 2 | values = PCT.objects.filter(code__startswith='a').values() return HttpResponse(json.dumps(values), content_type='application/json') |
https://docs.djangoproject.com/en/1.8/ref/models/queryset/值
看看Django的序列化框架。它不仅允许XML格式,还允许JSON和YAML。