我添加了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 %}
我为Album添加了单独的ModelForm,然后在forloop中添加。否则重复输入标签名称。 <input id="id_name" type="text" name="name" maxlength="100">
最新更新
我添加了以下数据。数据已保存。但是有一个奇怪的问题。仅Last Album
仅保存Test 1
和Test 2
。
答案 0 :(得分:1)
我认为inlineformset不包含专辑模型的表单。您必须为相册创建单独的ModelForm,然后执行{{album_form.name}}
。
您可以将您的formtable与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}}
使用带有名称,标题和艺术家字段的普通formset而不是modelformset。
答案 1 :(得分:0)
表单中没有name
字段。该表单适用于歌曲,它们有album
,title
和artist
。