2016-09-19 7 views
2

Mit django 1.8 beobachte ich etwas Seltsames. Hier ist mein javascript:django QueryDict liefert nur den letzten Wert einer Liste

function form_submit(){ 
    var form = $('#form1_id'); 
    request = $.post($(this).attr('action'), form.serialize(), function(response){ 
    if(response.indexOf('Success') >= 0){ 
     alert(response); 
    } 
    },'text') 
    .fail(function() { 
    alert("Failed to save!"); 
    }); 
    return false; 
} 

und hier werden die in views.py angezeigten Parameter

print request.POST 
<QueryDict: {u'form_4606-name': [u''], u'form_4606-parents': [u'4603', u'2231', u'2234']}> 

aber ich kann die Eltern nicht extrahieren:

print request.POST['form_4606-parents'] 
2234 

Warum es nur mir so schenkt der letzte Wert? Ich denke, dass etwas mit der Serialisierung nicht stimmt, aber ich kann einfach nicht herausfinden, wie ich das beheben kann.

+0

try ‚request.POST. getlist ('form_4606-eltern []') ' – suhailvs

Antwort

6

Von here

Dies ist ein Feature, kein Bug. Wenn Sie eine Liste von Werten für einen Schlüssel möchten, verwenden Sie die folgenden Schritte aus:

values = request.POST.getlist('key') 

Und das sollte retrieving list items from request.POST in django/python

+0

Wroked toll, obwohl ich verwirrt bin, warum. Dazu muss ich einen Code schreiben, der besagt, ob der Schlüssel 'Eltern' ist, und val = request.POST.getlist (Schlüssel), ansonsten val = request.POST.getl (Schlüssel) – max

+0

@max (und andere) - Vom verknüpften Ticket - "Der Grund dafür ist, dass eine API-Methode entweder eine Zeichenfolge oder eine Liste, aber nie beides zurückgeben sollte. Der häufigste Fall in Webanwendungen ist, dass ein Formularschlüssel einem einzelnen Wert zugeordnet wird does. getlist() ist für die Gelegenheiten (wie Ihre) da, wenn Sie beabsichtigen, einen Schlüssel mehrere Male für einen einzelnen Wert zu verwenden. " – Sayse

1

Sie können helfen getlist verwenden Methode

data = request.POST.getlist('form_4606-parentspass_id','') 
Verwandte Themen