0

inline_formset を追加しました。しかし{{ form.name }}、テンプレートには表示されません。何か不足していますか?ありがとう

class Album(models.Model):
    name = models.CharField(('album name'), max_length=100)
    owner = models.ForeignKey(User, verbose_name=('user'), related_name=('users'))

class Song(models.Model):
    album = models.ForeignKey(Album, verbose_name=('album'), related_name=('songs'))
    title = models.CharField(('song name'), max_length=100)
    artist = models.CharField(('artist name'), max_length=100)

inline_formset

AlbumFormSet = inlineformset_factory(Album, Song)

テンプレートで

   <tr>
      <td>{{ form.name }}</td> <-- its not showing
      <td>{{ form.title }} </td>
      <td>{{ form.artist }} </td>
    </tr>
{% endfor %}

{{ formset.management_form }}

アップデート

                 {% for form in formset %}
                    <tr>

                      <td>{{ form.title }} </td>
                      <td>{{ form.artist }} </td>
                      <td>{{album_form.name}}</td>
                      <td>{{ form.errors }}</td>
                    </tr>
                {% endfor %}

アルバム用に別の ModelForm を追加してから、forloop 内に追加しました。これで、入力タグ名が繰り返されます。<input id="id_name" type="text" name="name" maxlength="100">

最新のアップデート

以下のデータを追加しました。データが保存されます。しかし、奇妙な問題があります。だけではなく、Last Album保存されています。Test 1Test 2

ここに画像の説明を入力

ここに画像の説明を入力 ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

1

inlineformsetにはアルバムモデルのフォームは含まれていないと思います。アルバム用に別のModelFormを作成してから、のような操作を行う必要があります{{album_form.name}}

フォームセットをForeignKeyに関連付けて、アルバムにこのようなものを表示することができます-

# validation and other code
# ---------------------------
new_album = Album()
new_album_form = AlbumModelForm(request.POST,instance=new_album)
song_formset = AlbumFormset(request.POST)
new_album_form.save()
songs = song_formset.save(comit=False)
for song in songs:
    song.album = new_album
    song.save()

編集:

上記の解決策は、1つのアルバムと、そのアルバムへの外部キーを使用して複数の曲を作成する場合に機能する可能性があります。必要なものを取得するには、つまり{{form.name}}、modelformsetの代わりに、名前、タイトル、アーティストフィールドを持つ通常のフォームセットを使用します{{form.title}}{{form.artist}}

于 2012-06-23T20:34:28.907 に答える
0

nameフォームにフィールドがありません。フォームは曲用で、 、 、 がalbumありtitleますartist

于 2012-06-23T20:14:16.983 に答える