【发布时间】:2012-03-13 21:12:31
【问题描述】:
我的页面上有 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 %}
[.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 计数]
到目前为止,一切都很好。当表单集只包含初始数据时,这非常有效。
现在,我的问题是,当在表单中输入一些数据,并且表单验证为无效时,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
【问题讨论】:
标签: python django django-forms