2016-07-03 8 views
0

Ich rendere erfolgreich eine Tabelle mit Django Formsets, aber eine suplus leere Zeile wird am Ende gerendert! Was mache ich falsch ?Django Formularsatz - überschüssige Linie wird in der Tabelle gerendert

<table id="formset" class="form table table-condensed zeon zeon-row-hover"> 
        {{ formset.management_form }} 

        {% for form in formset.forms %} 
         {% if forloop.first %} 
         <thead><tr> 
         {% for field in form.visible_fields %} 
         <th>{{ field.label|capfirst }} 
         {% endfor %} 
         </tr></thead> 
         {% endif %} 
         <tr class="{% cycle row1,row2 %}"> 
         {% for field in form.visible_fields %} 
         <td class = 'zeon_input_table_cell'> 
         {# Include the hidden fields in the form #} 
         {% if forloop.first %} 
           {% for hidden in form.hidden_fields %} 
           {{ hidden }} 
           {% endfor %} 
         {% endif %} 
          {{ field.errors.as_ul }} 
          {{field}} 
         </td> 
         {% endfor %} 
         </tr> 
        {% endfor %}  
        </table> 

Ausblick:

MyModelFormSet = modelformset_factory(MyModel, exclude=('agreement_vendors',)) 
formset = MyModelFormSet(queryset = MyModel.objects.filter(...)) 
return render_to_response('vendors/edit_agreement.html', 
          {'formset':formset}, 
           context_instance=RequestContext(request)) 

enter image description here

UPDATE: Nach der Antwort unten, wird das Problem extra = 0

+0

Froh, dass Sie es gelöst haben. – Rexford

Antwort

1

Nach dem Django docs setzen gelöst:

Wie Sie sehen können, wurde nur ein leeres Formular angezeigt. Die Anzahl der angezeigten leeren Formulare wird durch den zusätzlichen Parameter gesteuert. Standardmäßig definiert formset_factory() ein zusätzliches Formular. Das folgende Beispiel zwei Blanko-Formulare angezeigt werden:

Mit dem im Verstand, Django docs so etwas wie dies legt nahe, macht die Zahl der zusätzlichen Formen zu setzen:

ArticleFormSet = formset_factory (ArticleForm, extra = 2)