at_yasu's blog

ロード的なことを

QueryDictと配列

QueryDict型から、a['item']とかで値を取得しても、中は配列だが取得できる値は配列の末尾の値のみ。配列(List)で取得したい場合は「a.getlist('item')」とする必要がある。forでループ処理したい場合は、「a.lists()」を利用し、タプル型で取得するのが良いかも。

>>> from django.http import *
>>> q = QueryDict("f=1&n=1&f=2&n=2&f=3&n=3&f=4&n=4&f=5&n=5&f=6&n=6&f=7&n=7&f=8&n=8&f=9&n=9&f=10&n=10&f=11&n=11&f=12&n=12&f=13&n=13")
>>> q
<QueryDict: {u'n': [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13'], u'f': [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13']}>
>>> q['n']
u'13'
>>> q.getlist('n')
[u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13']
>>> q.lists()
[(u'n', [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13']), (u'f', [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13'])]
>>> for (k,val) in q.lists():
...     print k,val
... 
n [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13']
f [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13']
>>> 


参考:リクエストオブジェクトとレスポンスオブジェクト — Django v1.0 documentation