DjangoでChoiceField
が与えられた
fruits = ChoiceField(label="Fruits", choices=(('A', 'Apple'),
('B', 'Banana'), ('C', 'Cherry')
)
Django 1.9のテンプレートでフォームオプションを表示するにはどうすればよいですか?たとえば、次のことを試しましたが、フォームデータを表示できません。
<table class="table table-bordered table-condensed">
<tr>
<th>
<label for="{{form.fruits.id_label}}">
{{form.fruits.label}}
</label>
</th>
<td>{% for value, displayable in form.fruits.choices %}
<option value="{{value}}">{{displayable}}</option>
{% endfor %}
</td>
</tr>
</table>
デフォルトでは、Djangoは、選択フィールドの視覚的表現として単純なドロップダウンリストを提供します。ビューにフォームのインスタンスを作成して、コンテキストに渡します。ここに例です、
モデルの例は、
gender = (
('x', 'Male'),
('y', 'Female'),
)
class User(models.Model):
gender = models.CharField(max_length=60, blank=True, default='',choices=gender,verbose_name="gender")
そして私たちのモデルフォーム、
class UserForm(forms.ModelForm):
def __init__(self, *args, **kargs):
super(UserForm, self).__init__(*args, **kargs)
class Meta:
model = User
fields = '__all__'
ビューにフォームのインスタンスを作成し、コンテキストに渡します。
def my_view(request):
form = UserForm()
return render_response('template.html',{'form': form})
次に、{{form.my_choice_field}}を使用してテンプレートに表示します。
<div class="col-md-4">
<div class="form-group">
<label>Gender</label>
<select name="gender" class="selectpicker" data-title="Select Gender" data-style="btn-default btn-block" data-menu-style="dropdown-blue">
{% for x,y in form.fields.gender.choices %}
<option value="{{ x }}"{% if form.fields.gender.value == x %} selected{% endif %}>{{ y }}</option>
{% endfor %}
</select>
</div>
</div>