Django フォーム表示 ChoiceField

Django ChoiceField プルダウン

forms.py

ch = (
    ("ja", "日本"),
    ("us", "アメリカ"),
    ("uk", "イギリス"),
    ("fr", "フランス"),
    ("de", "ドイツ"),
)
cho = forms.ChoiceField(label = "プルダウン", choices = ch)

次のように表示されます。

初期選択指定

初期選択項目を指定することが可能です。

forms.py

cho = forms.ChoiceField(label = "プルダウン", choices = ch, initial="uk")

次のように表示されます。

初期値を「”uk”」と指定していますので、対象項目である「イギリス」が選択された状態となります。

DBから取得したデータを初期指定したい場合に便利です。

Django ChoiceField ラジオボタン

forms.py

ch = (
    ("ja", "日本"),
    ("us", "アメリカ"),
    ("uk", "イギリス"),
    ("fr", "フランス"),
    ("de", "ドイツ"),
)
rdo = forms.ChoiceField(label = "ラジオボタン", choices = ch, widget=forms.RadioSelect())

次のように表示されます。

初期選択指定

こちらも同様に初期選択項目を指定することが可能です。

forms.py

rdo = forms.ChoiceField(label = "ラジオボタン", choices = ch, widget=forms.RadioSelect(), initial="uk")

「イギリス」が選択された状態となります。

Django ChoiceField チェックボックス

forms.py

ch = (
    ("ja", "日本"),
    ("us", "アメリカ"),
    ("uk", "イギリス"),
    ("fr", "フランス"),
    ("de", "ドイツ"),
)
cbx = forms.ChoiceField(label = "チェックボックス", choices = ch, widget=forms.CheckboxSelectMultiple())

次のように表示されます。

初期選択指定

こちらも同様に初期選択項目を指定することが可能です。

forms.py

cbx = forms.ChoiceField(label = "チェックボックス", choices = ch, widget=forms.CheckboxSelectMultiple(), initial=["us", "fr"])

「アメリカ」と「フランス」が選択された状態となります。

Django ChoiceFieldに設定したデータを後から変更する

DBなどに保存している情報によって、表示する内容を適宜変更したいことがあると思います。

views.py (使用しているフォーム型は「FrmChoicefieldForm」としています)

ch = (
    ("ja", "日本"),
    ("us", "アメリカ"),
    ("uk", "イギリス"),
)
form = FrmChoicefieldForm()
form.fields["rdo"].choices = ch

view側で上記のように変更したデータを指定することが可能です。
この場合、これまでの例での実装方法では五項目表示だったのに対し、三項目のみ表示されるようになります。
form側では設定値を指定せず、全てview側で行うというのもありです。

しかしこの場合、選択データを取得する処理で問題が起こる可能性があります。
下記記事を参考にしてください。

コメント