2016-03-19 12 views
1

Ich möchte alle Werte in meinem Feld Country_name in einer JSON-Antwort erhalten.Wie erhalten Sie die Werte im Django-Modellfeld?

Hier ist meine 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) 

und hier ist der Ansicht, es zu bekommen:

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") 

Hier ist die JSON-Antwort, die ich erhalten:

[{ "pk ": 1587," model ":" interApp.countries "," fields ": {" country_name ":" bangladesh "}}]

Aber ich will nicht das" pk "und das "Model", ich will nur alle Ländernamen.

+1

https://docs.djangoproject.com/de/1.9/topics/serialization/#subset-of-fields –

Antwort

0

Sie können stattdessen verwenden QuerySet.values_list() Methode, um alle Länder Name zu erhalten und dann senden Sie diese Daten in JSON-codierte Form.

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") 

können Sie JsonResponse verwenden auch statt HttpResponse. Es wäre nicht nötig, json.dumps() zu tun, da dies von JsonResponse Klasse selbst durchgeführt wird.

def AllCountries(request): 
    country_names = list(Countries.objects.values_list('country_name', flat=True)) 
    data = {'country_names': country_names} 
    return JsonResponse(data) 
0

Wenn Sie dies ohne Serializer versuchen wollen, bedeutet dies folgen, ist es einfach, was in views.py tat sich ..

data = map(lambda x:{'country_name':x.country_name},Countries.objects.all()) 
return HttpResponse(content=json.dumps({'data':data}),content_type="application/json") 

Ersetzen Sie einfach Ihre 3 Zeilen mit über 2 Zeilen und Sie können Feld hinzufügen, Sie wollen immer von Modellen im Wörterbuch.

Verwandte Themen