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?
Mögliche Duplikat [Django Ansicht Rückkehr json ohne Verwendung der Vorlage] (http://stackoverflow.com/questions/9262278/django-view-returning-json-without-using-template) –
Sie sollten ein 'Response'-Objekt und kein' CountryRegion'-Objekt zurückgeben. Siehe https://docs.djangoproject.com/de/1.10/topics/http/views/ – Gocht