2017-01-06 3 views
0

Ich habe eine Django-Ansicht, die ich über eine Ajax-Funktion in einer Vorlage aufruft. Meine Vorlage hat einen 'Country' Pulldown und einen 'Region' (oder State) Pulldown. Wenn der Benutzer auf ein Land klickt, möchte ich eine Ajax-Funktion verwenden, um alle Regionen (oder Status) in diesem Land abzurufen und ein Dropdown-Menü "Region" mit diesen Daten zu füllen. Wenn jedoch meine Ansicht ausführt und versucht, die Abfrage Satz zurückzukehren, ich diesen Fehler:Warum dieser Django-Fehler "Zu viele Werte zum Entpacken"?

ValueError: too many values to unpack 

Hier wird der Template-Tag und Ajax-Funktion:

# demo.html 
<select id="id_country" name="country" onchange="getState(this.value);"> 
    <option value="" selected="selected">Please choose...</option> 
    <option value="US">United States</option> 
    <option value="GB">United Kingdom</option> 
    <option value="CA">Canada</option> 
</select> 

<script> 
function getState(val) { 
    $.ajax({ 
    type: "GET", 
    url: "/demo/get_region", 
    data:'country_id='+val, 
    success: function(data){ 
     $("#id_region").html(data); 
    } 
    }); 
} 
</script> 

Hier ist die Ansicht:

# views.py 
from location.models import CountryRegion 
def get_region(request): 
    country_id = request.GET.get('country_id', None) 
    country_region = CountryRegion.objects.filter(country_cd=country_id) 
    # Error occurs here on the return 
    return country_region 

Das Modell (die ich erkennen, nicht normiert ist) sieht wie folgt aus:

class CountryRegion(models.Model): 
    country_cd = models.CharField(max_length=2) 
    country_name = models.CharField(max_length=50) 
    region_cd = models.CharField(max_length=3) 
    region_name = models.CharField(max_length=50) 

Ein Datenbank-Datensatz sieht wie folgt aus:

id country_cd country_name region_cd region_name 
59 US   United States NY   New York 

Warum wird dieser Fehler auftritt? Wenn der Ländercode "US" lautet, würde ich 50 Instanzen zurückgeben, eine für jeden Staat. Gibt es eine Grenze für die Datenmenge, die eine Django-Ansicht zurückgeben kann?

+0

Mögliche Duplikat [Django Ansicht Rückkehr json ohne Verwendung der Vorlage] (http://stackoverflow.com/questions/9262278/django-view-returning-json-without-using-template) –

+3

Sie sollten ein 'Response'-Objekt und kein' CountryRegion'-Objekt zurückgeben. Siehe https://docs.djangoproject.com/de/1.10/topics/http/views/ – Gocht

Antwort

0

müssen Sie json zuerst importieren,
Import json
dann
Rückkehr Httpresponse ( json.dumps (country_region), content_type = "application/json" )

Verwandte Themen