Djangoのフォームは非常に便利で、コード量を猛烈に削減してくれます。が、多機能であるが故に使いこなせないと宝の持ち腐れになります。
はい、持ち腐れてます。泣。
ユーザにフォームでの入力をしてもらう場合、いくつかの選択肢から複数選択してもらうケースがあります。今回はそのサンプル。
フォームを定義するときに、
week = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=[(0,u’月’),(1,u’火’),(2,u’水’),(3,u’木’),(4,u’金’),(5,u’土’),(6,u’日’),])
これだけ。これで月~日の複数選択可能なチェックボックスが出力されます。ユーザからの入力値はリストで返ってきます。
また、初期値を入れたい場合は[1,3]とリストで渡してあげればOK。上記の例だと火曜日と木曜日にチェックが入った状態で出力されます。
結構悩みました。
Python2.5、Django1.2.3で動作。1.0から動くみたいです。