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 不包含专辑模型的表格。您必须为 Album 创建一个单独的 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()

编辑:

如果您想创建一个专辑和多首带有该专辑外键的歌曲,上述解决方案可能会起作用。为了得到你想要的,即{{form.name}}使用带有名称、标题{{form.title}}{{form.artist}}艺术家字段的普通表单集,而不是模型表单集。

于 2012-06-23T20:34:28.907 回答
0

表单中没有name字段。表格用于歌曲,它们有album,titleartist.

于 2012-06-23T20:14:16.983 回答