Python 根据POST中的数据增加Django表单集中初始表单的数量?

Python 根据POST中的数据增加Django表单集中初始表单的数量?,python,django,django-forms,Python,Django,Django Forms,我的页面上有django表单集,还有一些额外的表单;我只想向用户(最初)显示表单中已有数据 目前,我通过将每个窗体渲染为隐藏来处理此问题: {% for form in incorporate_directors_formset %} <tbody class="incorporate_directors_formset_div subform incorporate_directors_formset_invisible_div" id="incorporate_directors_fo

我的页面上有django表单集,还有一些额外的表单;我只想向用户(最初)显示表单中已有数据

目前,我通过将每个窗体渲染为隐藏来处理此问题:

{% for form in incorporate_directors_formset %}
<tbody class="incorporate_directors_formset_div subform incorporate_directors_formset_invisible_div" id="incorporate_directors_formset_div_{{ forloop.counter }}">
        {{ form }}
</tbody>
<tr class="magic-last-row invisible"><td colspan=2><div></div></td></tr>
{% endfor %}
[
director\u form\u to\u display
几乎只是删除类
。合并director\u formset\u invisible\u div
并增加
总计表单数]

到目前为止,一切顺利。当表单集只包含初始数据时,这种方法非常有效

现在,我的问题是,当在表单中输入一些数据,并且表单验证为无效时,
INITIAL\u FORMS
值保持原来的状态,因此上面的代码不会显示现有但错误的表单

在我看来,如何增加初始表单数以匹配浏览器返回的表单总数?或者,以其他方式确保初始表单数足够大

我试过
holding\u formset.initial\u forms=holding\u formset.forms
,但结果是:

Traceback (most recent call last):

File "<debugger>", line 1, in <module>
holding_formset.initial_forms = holding_formset.forms
AttributeError: can't set attribute
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
holding_formset.initial_forms=holding_formset.forms
AttributeError:无法设置属性

解决方案是使用表单集的管理表单修改实际请求数据:

from django.forms.formsets import INITIAL_FORM_COUNT
if formset.initial_form_count() < formset.total_form_count():
    manform = formset.management_form
    prefixed_name = manform.add_prefix(INITIAL_FORM_COUNT)
    manform.data[prefixed_name] = formset.total_form_count()
从django.forms.formset导入初始表单计数
如果formset.initial\u form\u count()
@binithb任何需要的地方。可能是从某种角度来看的。当使用此解决方案时,我一直会遇到“多值DictKeyError”。@SandeepBalagopal请记住,此解决方案已经存在五年了。嗯。找不到任何其他解决方案。我有同样的要求。我的表单集中有两个、三个表单,但它们没有按要求进行验证,因为没有输入任何内容。只有第一个是验证。
from django.forms.formsets import INITIAL_FORM_COUNT
if formset.initial_form_count() < formset.total_form_count():
    manform = formset.management_form
    prefixed_name = manform.add_prefix(INITIAL_FORM_COUNT)
    manform.data[prefixed_name] = formset.total_form_count()