はまりそうなのでメモ。
request.POSTなどの辞書にパラメータを追加して使いまわす場合(フォームとか
最初にdictを作って、updateメソッドでrequest.POSTなどを引数に渡すとよろしくない。
def hoge_view(request): d = {'bar': 'hoge'} d.update(request.POST) form = HogeForm(d) # 以下略
このコードは動く。しかし、dはdictだけども、request.POSTはQueryDict。QueryDictはvalueをリストで持ってるので、フォームの値がおかしくなる。
じゃあどう書くか。以下に例。
def hoge_view(request): d = request.POST.copy() d.update({'bar': 'hoge'}) form = HogeForm(d) # 以下略
追記
Ianに突っ込まれたので経緯などを少し追記した。