2009-06-04 3 views
1

私はソングリストフォームを作っています。テンプレートファイルでDjangoのModelMultipleChoiceFieldをレンダリングする方法は?

models.py

class Song(models.Model): 
    title = models.CharField(max_length=60) 

class List(models.Model): 
    title = models.CharField(max_length=100) 
    songs = models.ManyToManyField(Song, through='Order') 

class Order(models.Model): 
    list = models.ForeignKey(List) 
    song = models.ForeignKey(Song) 
    order = models.IntegerField(unique=True) 

と、

forms.py

class ListEditForm(forms.Form): 
    title = forms.CharField(
     label='List Title', 
     widget=forms.TextInput(attrs={'size':100}) 
    ) 
    songs = forms.ModelMultipleChoiceField(
     label= 'Song Order', 
     required= False, 
     widget=forms.CheckboxSelectMultiple, 
     queryset= Song.objects.none() 
    ) 

、次いで、

ListEditForm.py

<form id="edit-form" method="post" action="/list/edit/"> 
<p> 
    {{ form.title.errors }} 
    {{ form.title.label_tag }} 
    {{ form.title }} 
</p> 
<p> 
    {% for song in form.songs %} 
     {{ song.label_tag }} 
     {{ song }} 
    {% endfor %} 
</p> 
<input type="submit" value="save" /> 
</form> 

このテンプレートは、次のエラーが発生:「BoundField」オブジェクトは、私が「form.songs」で各フォームフィールドをレンダリング分割するにはどうすればよいのiterable

ではありません。レンダリング中 は、例外をキャッチ?

答えて

2

ListEditForm.songsは個々のソングフィールドのリストではなく、ソングの選択肢のリストを含む単一のフィールドであるため、反復可能でないエラーが発生しています。あなたの説明から、リストのレンダリング方法を私はよく分かりません。

Djangoフォームセットの使用を検討することをお勧めします。 http://docs.djangoproject.com/en/dev/topics/forms/formsets/

+0

ご返信ありがとうございます。 私の英語が壊れて申し訳ありません。 –

関連する問題