2014-03-12 59 views
0
保存到變量

我的QueryDict的結構如下:如何「陣列」從的QueryDict

QueryDict: {u'tab[1][val1]': [u'val1'], u'tab[1][val2]': [u'val2'], u'tab[0][val1]': [u'val1'], u'tab[1][val2]': [u'val2']}

我想將它保存在一個迭代變量,所以我可以做這樣的事情:

for x in xs: 
    do_something(x.get('val1')) 

其中x是標籤[0]等

我嘗試:

dict(request.POST._iteritems()) 

但它不返回tab [0],而是將tab [0] [val1]作爲元素返回。 是否可以將整個選項卡[idx]存儲在變量中?

回答

1

與傳統的dict相比,Django的QueryDict有幾個額外的方法來處理每個鍵的多個值;你的目的有用的是:

QueryDict.iterlists()QueryDict.iteritems()不同的是它 所有的值,作爲一個列表,在字典中的每個成員。

QueryDict.getlist(key, default) 以Python列表的形式返回帶請求鍵的數據。如果鍵不存在並且未提供默認值,則返回空列表。它保證返回某種列表,除非默認值不是列表。

QueryDict.lists() 與項目()相似,但它包含字典中每個成員的所有值,作爲列表。

所以,你可以這樣做:

qd = QueryDict(...) 
for values in qd.lists(): 
    for value in values: 
     do_something(value) 

還要注意的是「正常」的字典的方法,如get始終只返回一個值(該密鑰的最後一個值)。