Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Flaskでフォームの配列のパラメータを取得して縦横に変換する

注文明細の数量を変更するような画面を作ってまして、こういうデータ構造でした。

ID 商品名 注文数
2 AAAA 3
3 BBBB 5
4 CCCC 6
5 DDDD 7

IDと商品名と注文数は配列で渡すので、こういうHTMLでマークアップします。

    <input type="hidden" name="id[]" value="{{ od.id }}">
    <input type="text" name="ordernum[]" value="{{ od.ordernum }}">

で、各々別の配列に入っている値ですが、このままで使えない。縦と横を変換したい。下記のi_want_thisのようなリスト構造にしたい。

list1 = [1, 2, 3]
list2 = [4, 5, 6]

i_want_this = [ (1 ,4), (2, 5), (3, 6) ] 

で、これをFlaskでやるとこうなります。超簡単でした。

    id_list = request.form.getlist('id[]')
    ordernum_list = request.form.getlist('ordernum[]')

    for (id, ordernum) in zip(id_list,  ordernum_list):
        print(id, ordernum)

5分で実装が終わった。CakePHPには戻れなーい。Pythonのリスト操作便利すぎー