【Django】プルダウンメニュー選択の実装
Djangoの入力フォームにてプルダウンメニューでの選択表示を実装について書きます。
プルダウンメニューを実装する方法として2つの方法で実践しています。
1.models.pyでの実装
2.forms.pyでの実装
1.models.pyでの実装
プルダウンメニューでの選択表示をcategory_choiceと定義して、対象のタプル内にchoices=category_choiceを記述。
app名/models.py
category_choice = (
('', '選択肢から選んでください'),
('0', '健康'),
('1', 'ビジネス'),
('2', '学習'),
('3', 'アウトドア・旅行'),
('4', 'その他'),
)
class Post(models.Model):
category = models.CharField(
verbose_name='カテゴリー', choices=category_choice, max_length=255)
....
2.forms.pyでの実装
プルダウンメニューでの選択表示をgender_choiceと定義して、Fieldクラスで、forms.ChoiceFieldを記述し、タプル内にchoices=gender_choiceを記述。
app名/forms.py
gender_choice = (
('0', '未設定'),
('1', '男性'),
('2', '女性'),
)
class SignUpForm(UserCreationForm):
gender = forms.ChoiceField(required=False, choices=gender_choice, label='性別')
....
1,2の両者ともあとはテンプレートファイル側で通常通りformを実装でOKとなります。
テンプレートファイル一部抜粋
<form method="POST" role="form" action="" class="signup-form">
{% csrf_token %}
{{form|crispy}} # Crispy Formsを使用
</form>
個人的にはruby on railsのactive_hashよりも手軽に実装できるような感じます。