【Django】Form の choices を dict から作成する

投稿日: 2023/06/03
更新日: 2023/06/03
シェア:

URL copied!


概要

あらかじめ dict で作っていたデータをそのまま Form の選択肢にしたい場合の簡単なやり方

コード

menu_dict = {
    1: "Aコース",
    2: "Bコース",
    3: "Cコース",
}

という dict があった時

list(menu_dict.items())
# [(1, 'Aコース'), (2, 'Bコース'), (3, 'Cコース')]

を choices に指定できる。

実際に使う感じは以下のような感じ。
(menu_dict が不変であれば★の中で指定できますが、可変する場合はinit内で呼び出して使いましょう)

class HogeForm(forms.Form):
    menu = forms.ChoiceField(label="メニュー")  # ★

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        menu_dict: dict = get_menu_dict()  # 辞書をとってくる処理
        self.fields["menu"].choices = list(menu_dict.items())  # ココ!