CheckboxSelectMultiple ウィジェットを利用し、各チェックボックスを表示する MultipleSelect フォームを繰り返し処理しようとしています。反復のコードは次のとおりです。
{% for choice in form.mp4_rasters %}
<label class="checkbox inline">
{{ choice }}
</label>
{% endfor %}
私が宣言したフォームは次のとおりです。
from django import forms
MP4_CHOICES = ('240p', '360p', '720p', '1080p')
WEBM_CHOICES = MP4_CHOICES
OGG_CHOICES = MP4_CHOICES
MISC_CHOICES = ('MP3', 'Roku')
class BatchSubmitForm(forms.Form):
video_file = forms.FileField()
framerate = forms.FloatField()
title = forms.CharField()
destination = forms.CharField()
mp4_rasters = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=MP4_CHOICES)
webm_rasters = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=WEBM_CHOICES)
ogg_rasters = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=OGG_CHOICES)
misc_rasters = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=MISC_CHOICES)
レンダリング時に、渡した名前で各チェックボックスを出力することを期待しますが、「240p」、「360p」などではなく、各チェックボックスの数字 (4、6、2、0) を取得します。代わりに、次のコードを使用して、ウィジェットの選択に基づいてレンダリングも試みました。
{% for choice in form.mp4_rasters.field.widget.choices %}
<label class="checkbox inline">
{{ choice }}
</label>
{% endfor %}
そのコードは名前を適切にレンダリングしますが、チェックボックスは含まれていません。チェックボックスとフォームで定義されている適切な名前をレンダリングするには、どちらに何を追加できますか?