我希望在JSON响应中获取country_name字段中的所有值。
这是我的models.py:
from django.db import models
class Countries(models.Model):
country_name = models.CharField(max_length=100)
def __str__(self):
return str(self.country_name)
以下是获取它的观点:
from django.http import Http404
from django.shortcuts import HttpResponse
from .models import Countries
import json
from django.core import serializers
def AllCountries(request):
countries = list(Countries.objects.all())
data = serializers.serialize('json', countries)
return HttpResponse(data, mimetype="application/json")
以下是我得到的JSON响应:
[{“pk”:1587,“model”:“interApp.countries”,“fields”:{“country_name”:“bangladesh”}}]
但我不想要“pk”和“模特”,我只想要所有的国名。
答案 0 :(得分:0)
如果您想在没有序列化程序的情况下尝试此操作,请遵循此操作,在views.py本身中这很简单。
data = map(lambda x:{'country_name':x.country_name},Countries.objects.all())
return HttpResponse(content=json.dumps({'data':data}),content_type="application/json")
简单地用2行以上的行替换你的3行,你可以在字典里面的模型中添加你想要的字段。
答案 1 :(得分:0)
您可以改为使用QuerySet.values_list()
方法获取所有国家/地区名称,然后以json编码形式发送此数据。
def AllCountries(request):
country_names = list(Countries.objects.values_list('country_name', flat=True))
data = {'country_names': country_names}
return HttpResponse(json.dumps(data), content_type="application/json")
您也可以使用JsonResponse
代替HttpResponse
。然后没有必要json.dumps()
,因为这将由JsonResponse
类本身执行。
def AllCountries(request):
country_names = list(Countries.objects.values_list('country_name', flat=True))
data = {'country_names': country_names}
return JsonResponse(data)