Django模型formset查询生成额外的对象

iva*_*123 1 django django-forms

我想创建一个确认模型的formset.我已经成功创建了formset,但是formset创建了一个额外的确认对象.

这是我的代码:

视图

def render_fulfillment_modal(request,template='test.html'):
    ....
    formset = modelformset_factory(Confirmation)
    form = formset(queryset=Confirmation.objects.filter(customer_order__deal = deal))

   if request.method == 'POST':
      form = formset(request.POST, request.FILES)
      if form.is_valid():
         form.save()
Run Code Online (Sandbox Code Playgroud)

模板

<form method="post" action="{% url open_fullfill_modal deal.id %}">{% csrf_token %}
      {{ form.management_form }}                  
      {% for f in form %}       
      <tr>
      <td>{{f.fullfilled}}</td>                                 
      <td>
      <p class="name">{{f.instance|confirmation_user_info}}</p>                                  
      </td>                     
      <td><input type="text" class="input-small datepicker"></td>
      <td>{{f.tracking_code}}</td>
      </tr>
      {% endfor %}

     <div class="pull-right button-box"> 
        <button type="submit" class="btn btn-primary btn-large">Save Changes</button>
     </div>
Run Code Online (Sandbox Code Playgroud)

我正在为不相关的对象获取一个额外的表单,这不在我的查询集中.我用另一个模型试过这个,每次我得到一个额外的对象.我想这是处理数据或其他东西的表格集,我不确定.发布此表单时会出现此问题.它给了我MultiValueDictKeyError,它是:

"Key 'form-0-id' not found in <QueryDict: {u'form-MAX_NUM_FORMS': [u''], u'form-TOTAL_FORMS': [u'3'] ... 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

小智 5

只要把{{f.id}}之前{{f.fullfilled}}

它为所有f提供了一个隐藏的form-id,并将其传递给request.Post中的QueryDict