我在我的頁面上有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