Django: ChoiceField()で作成したドロップダウンメニューでデフォルト表示を変更する方法

2010年2月14日

1
2
3
4
5
import forms

class Hoge_Form(forms.ModelForm)
    hours = forms.ChoiceField( choices=[(1,"1時間"), (2,"2時間"), (3,"3時間")] )
    minutes = forms.ChoiceField( choices=[(10,"10分"), (20,"20分"), (30,"30分")] )

上記のようにchoicesフィールドに(value, name)のタプル配列を与えることで ドロップダウンリストが作成されます。でもこれでは、ブラウザでアクセスすると 常に最初の値: 「10分」が表示されてしまいます。


DBの保存内容によって、初期表示の値を変更したい場合もあると思います。
そんな場合は、フォームオブジェクトを作成する際にコンストラクタ引数で渡してあげましょう。

form = Hoge_Form({'hours':2, 'minutes':30})

上記のように、辞書式で(column_name, value)形式で指定してあげることで、 初期表示値を変更することができるようになります。