Yaji_S’s diary

プログラミング学習のアウトプットブログ

【Django】プルダウンメニュー選択の実装

Djangoの入力フォームにてプルダウンメニューでの選択表示を実装について書きます。

プルダウンメニューを実装する方法として2つの方法で実践しています。

1.models.pyでの実装

2.forms.pyでの実装

 

1.models.pyでの実装

プルダウンメニューでの選択表示をcategory_choiceと定義して、対象のタプル内にchoices=category_choiceを記述。

app名/models.py
 
from django.db import models
 
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
 
from django import forms
 
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を使用
 
<button type="submit" class="button">Sign up</button>
</form>

個人的にはruby on railsのactive_hashよりも手軽に実装できるような感じます。