1

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 %}

そのコードは名前を適切にレンダリングしますが、チェックボックスは含まれていません。チェックボックスとフォームで定義されている適切な名前をレンダリングするには、どちらに何を追加できますか?

4

1 に答える 1

1

変化する:

MP4_CHOICES = ('240p', '360p', '720p', '1080p')

MP4_CHOICES = (('240p', '240p'), 
               ('360p', '360p'), 
               ('720p', '720p'), 
               ('1080p', '1080p'))

数値が表示されている理由はchoices、タプルを期待しているためです。タプルを提供していないため、これを行っています。

('240p')として評価され、ドロップダウンに表示される('2', '4', '0', 'p')ようになっています。('2', '4', '0', 'p')[1]したがって、(4, 6, 2, 0).

于 2013-10-11T22:09:41.343 に答える