【Django】プルダウンメニューを扱えるFormのChoiceFieldに初期値を設定する

Djangoで、FormにChoiceFieldを作成した時に、フロント側のプルダウンメニューで初期値を設定できていれば非常に柔軟性があって便利ですね!!

本日はそんなフロント側でプルダウンメニューの初期値をForms側で一発で設定できる方法を紹介します。

環境

環境

・django 2.2

どんな時に使えるのか

例えば、47都道府県のプルダウンメニューの初期値を一番人口が多い「東京」にしておくとか、誕生日の入力で一番ターゲットとなる年代の西暦に初期値を設定しておくことなどが想定されます。

今回の例ではweb学習アプリを作成していて、出題数の選択画面を以下のように「10」に初期値を設定しておくことを想定してコードを書いてみます。

実際のコード

今回の例では先述した通り、web学習アプリでユーザーが出題数の選択画面で初期値を10から始められるように設定してコードを書きます。

forms.py

class SelectQuestionForm(forms.Form):
    answers = forms.fields.ChoiceField(
        choices = (
            (1, 1),
            (3, 3),
            (5, 5),
            (10, 10),
            (20, 20),
            (30, 30),
            (40, 40),
            (75, 75),
            (999, 'ALL')
        ),
        initial=10,
        required=True,
        widget=forms.widgets.Select()
    )

重要なポイントとしては、14行目にChoiceFieldの引数にinitial=10を渡すことです。

initialはキーワード引数で、右辺の10はchoicesで定義された「10」を指します。

他のサイトを見ると、わざわざviews側でinitialを設定したりhtml側で処理を書いている人もいますが、formsにまとめて書くことの方がわかりやすくて変更も効きやすいのでお勧めします。

以上になります。


最後に

いかがでしたでしょうか。

以上が、「【Django】プルダウンメニューを扱えるFormのChoiceFieldに初期値を設定する」の紹介記事になります。

プログラミング学習を効率良く進めるには…

私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。

何から手をつけていいのか、わからない。

プログラミングを始めてみたけど、エラーが解決できない。

そしてネットで調べていくうちに膨大な時間が過ぎていきました。

私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。

1. いつまでもダラダラとやらないで、目標を決定して短期集中する

2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう

.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。

カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?

また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です