2012-06-23 3 views
0

Я добавил inline_formset. Но {{ form.name }} его не показано в шаблоне. Я что-то упускаю? благодаряinline_formset отсутствует поле

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

UPDATE

    {% 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. NOw его повторяющееся имя входного тега. <input id="id_name" type="text" name="name" maxlength="100">

Последнее обновление

Я добавил следующие данные. Данные сохраняются. Но есть странная проблема. Только Last Album экономит не Test 1 и Test 2.

enter image description here

enter image description here enter image description here

enter image description here

ответ

1

Я думаю, что inlineformset не включает форму для модели альбома. Вы должны создать отдельный ModelForm для альбома, а затем сделать что-то вроде {{album_form.name}}.

Вы можете связать вас FormSets с 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() 

EDIT:

выше решение может работать, если вы хотите создать один альбом и несколько песен с иностранным ключом к этому альбому. Чтобы получить то, что вы хотели, то есть {{form.name}}, {{form.title}} и {{form.artist}} используйте обычный набор форм с полями имени, названия и исполнителя вместо modelformset.

+0

Я думаю, что ты прав. Если я создам отдельный ModelForm для альбома. Тогда как я могу связать их данные? потому что я применил внешний ключ к альбому. Как мне сохранить данные? – Kulbir

+0

ok Я добавил отдельный ModelForm для альбома. Затем '{{album_form.name}}' внутри 'formet' forloop. Но его повторяющееся имя входного тега ''. Как мне избавиться от этой проблемы? – Kulbir

+0

Я обновил ans с помощью образца snipest. Я думаю, это может сработать. – machaku

0

Существует не name поле в форме. Форма для Песни, и у них есть album, title и artist.

+0

Я также попробовал 'form.album'. но не повезло. – Kulbir