2016-09-19 129 views
2

使用django 1.8,我正在观察奇怪的事情。 这里是我的javascript:django QueryDict只返回列表的最后一个值

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; 
} 

这里显示在views.py

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

的参数,但我不能提取父母:

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

为什么只给我最后一个值? 我认为序列化有问题,但我无法弄清楚如何解决这个问题。

+0

试“request.POST。 getlist('form_4606-parents []')' – suhailvs

回答

6

here

这是一个功能,而不是一个错误。如果你希望值的列表中的一个关键,使用以下命令:

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

,这应有助于retrieving list items from request.POST in django/python

+0

Wroked很棒,虽然我很困惑,为什么。这需要我编写一个代码,说明如果key是'parents'那么val = request.POST.getlist(key)否则val = request.POST.getl(key) – max

+0

@max(和其他) - 从链接的票证 - “背后的原因是一个API方法应该一致地返回一个字符串或一个列表,但从来都不是这样。Web应用程序中的一个常见情况是将一个表单键与单个值相关联,所以这就是[]语法如果你打算多次使用一个键作为单个值,那么getlist()就会出现在你的场合(比如你的)。“ – Sayse

1

可以使用的GetList方法

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