首页 > 解决方案 > 如何使用 django 显示正确的 json 数据

问题描述

我试图将数据库记录显示为 json 数组。如果我运行下面的代码

视图.py

from django.core import serializers
from django.http import HttpResponse

def read(request):
    members = Member.objects.all()
    print("success")
    jsondata = serializers.serialize('json', members)
    return HttpResponse(jsondata, content_type='application/json')

模型.py

from django.db import models
class Member(models.Model):
    firstname = models.CharField(max_length=40)
    lastname = models.CharField(max_length=40)

    def __str__(self):
        return self.firstname + " " + self.lastname

我得到如下的 json 响应

[
{"model": "crud.member", "pk": 1, "fields": {"firstname": "Thor", "lastname": "Odinson"}},  
{"model": "crud.member", "pk": 6, "fields": {"firstname": "sdd", "lastname": "rrrrr"}}
]

我的要求: 这是我想要的。我想通过以下方式获取我的 json 响应

[
{"firstname": "Thorr", "lastname": "Odinson"},  
{"firstname": "Ann", "lastname": "bell"}
]

为此,如果我尝试JsonResponse()按照下面的代码使用方法,则会收到错误 “QuerySet”对象不可调用

def read(request):
    #response_data = {}
    response_data = []
    members = Member.objects.all()
    return JsonResponse(response_data, members)
    print("success")

标签: django

解决方案


对于您正在寻找的输出,调用json.dumps()输出QuerySet.values()应该没问题:

members = Member.objects.values('firstname', 'lastname')
jsondata = json.dumps(list(members))

推荐阅读