我在我的页面上有django formsets,有几个额外的表单;我只想向用户(最初)显示其中已有数据的表单。根据POST中的数据增加Django formset中初始表单的数量?
目前我通过渲染每一形式处理这个隐藏:
{% 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 %}
[.incorporate_directors_formset_invisible_div
只是设置display:none;
]
然后使用JavaScript来揭露已经有数据的那些:
for(i = directors_initialforms.val(); i > 0; i--)
director_form_to_display($('.incorporate_directors_formset_invisible_div').first(), false);
[director_form_to_display
几乎只是删除类.incorporate_directors_formset_invisible_div
和增量TOTAL_FORMS
count]
到目前为止,这么好。当formset只包含初始数据时,这是完美的。
现在,我的问题是,当一些数据输入到表单中,并且表单被验证为无效时,INITIAL_FORMS
的值保持原来的状态,所以上面的代码不会显示现有的错误表单。
在我看来,如何增加INITIAL_FORMS计数以匹配浏览器发回的TOTAL_FORMS计数?或者,或者,否则确保INITIAL_FORMS计数足够大?
我已经试过holding_formset.initial_forms = holding_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
以及如何/在哪里使用这个manform实例? – binithb 2016-01-20 21:38:57
@binithb无论你需要什么。可能在视图中。 – Marcin 2016-01-20 22:45:20
我在使用此解决方案时不断收到'MultiValueDictKeyError'。 – 2017-09-11 10:46:22