如何在django模型字段中获取值?

时间:2016-03-19 09:29:58

标签: python json django

我希望在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”和“模特”,我只想要所有的国名。

2 个答案:

答案 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)