保存分页的django formsets时抛出MultiValueDictKeyError

时间:2016-07-27 09:37:57

标签: django pagination formsets

我已经删除了之前的问题,并发布了一个新问题,因为经过几次简化后,我使代码更简洁,以减少可能的原因(具体来说,我删除了重组部分)< / p>

我使用Django无尽的分页(Twitter风格)来渲染Django formset表。一切正常,直到我尝试保存用户输入并以MultiValueDictKeyError: "u'form-10-id'"结束。请注意,它不是“你好 - 0 -id”,它是 10 (十),这意味着问题不是由于缺少隐藏字段造成的。

模板:

<table>
       <thead>...
       </thead>
       <tbody>
       {% load el_pagination_tags %}
       {{ my_formset.management_form }}

       {% paginate my_formset %}    

       {% for form in my_formset %}
            <tr>
                <td>
                    {% for hidden in form.hidden_fields %}
                            {{ hidden }}
                    {% endfor %}
                </td>
                   .... 
            </tr>               
        {% endfor %}    
        </tbody>
    </table>

查看处理AJAX POST请求以保存数据

def view_for_saving_input(request):
    qs = MyModel.objects.filter(...)
    FormSet =  modelformset_factory(MyModel, form = MyModelForm, can_delete=False, extra = 0)
    my_formset = FormSet(request.POST, request.FILES)
    # Also tried  my_formset = FormSet(request.POST, queryset = qs)
    # no difference

    for form in my_formset: # MultiValueDictKeyError: "u'form-10-id'"
        if form.is_valid():
            form.save()
    return HttpResponse(True)

如果我从模板中删除{% paginate my_formset %},从而放弃了无尽的分页,一切正常。我试图交换行{% paginate my_formset %}{{ my_formset.management_form }},但仍然没有成功(在这种情况下,Django抛出了一个似乎合理的Missing management form错误。

直观地说,核心原因是因为分页不允许呈现第十种形式,显然,Django无法找到隐藏的字段。但我不知道如何解决它

0 个答案:

没有答案