私はいくつかの余分なフォームと、私のページにdjango formsetsを持っています。私は、ユーザーに(最初に)すでにデータが入っているフォームを表示したいだけです。POSTのデータに基づく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 %}
すでにデータを持っているもの公開するためにはJavaScriptを使用して、その後
[.incorporate_directors_formset_invisible_div
だけdisplay:none;
を設定します]:
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
を削除し、をインクリメントしますカウント]
これまでのところ、とても良いです。これは、フォームセットが初期データだけを含んでいる場合に完全に機能します。
私の問題は、一部のデータがフォームに入力され、フォームが無効として検証された場合、上記のコードは既存の、しかし間違ったフォームを表示しないように、INITIAL_FORMS
の値は元のままです。
私の見解では、ブラウザで送信されたTOTAL_FORMSの数に合わせてINITIAL_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
@binithb必要なときはいつでも。おそらく、見解で。 – Marcin
このソリューションを使用する場合、私は 'MultiValueDictKeyError'を取得し続けます。 –