1

modelformset_factory を使用して必要なフォームを作成できました。

avaluos = Avaluo.objects.filter(Estatus__contains='CONCLUIDO',Factura__isnull=True)
FacturaFormset = modelformset_factory(Avaluo,form=FacturaForm,extra=0)

現在、これは見つかった行ごとに次の HTML を生成しています。

<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>

単一の送信ボタンを使用してすべてのフォームを送信したい。

何か案は?

アップデート

最終的に、各行の入力を生成できるdjango-crispy-formsを使用してから、手動でフォームを追加して送信しました。

   self.helper.form_tag = False


{{example_formset.management_form }}
       {% for a,b in olist %}
{{ b.id }}
<tr>
    <td style="width:10px;"> {% crispy b %} </td>
    <td> {{a.id}} </td>     
</tr>
{% endfor %} 
4

3 に答える 3

10

モデル フォームセットの詳細を参照してください。個別のタグを用意する必要はありませんform。それがフォームセットを使用するポイントです。

<form method="post" action="">
    {{ factura_formset.management_form }}
    <table>
        {% for form in factura_formset %}
            {{ form }}
        {% endfor %}
    </table>
</form>

idまた、ページで属性を複数回使用するたびに、開発者は世界のどこかで眠りにつくように泣き叫びます。

于 2013-02-28T00:02:52.517 に答える
0

「同じ」フォームの多くのインスタンスを作成しようとしている場合 (つまり、それらはすべて同じように見えます)、あたかも単一のマスター要素に属する多くの子の 1 つであるかのように、実際に作成する必要はありません。各フォームセットのフォームタグ。

私が間違っていなければ、あなたは 1 つの評価オブジェクトに対して多くのファクトラを編集しようとしてます。私は正しいですか?表現は、「factura」ごとに 1 つずつ、多数のインライン フォームセットを含む単一の「avaluo」フォームになります。

modelformset ファクトリの代わりにインライン フォームセット ファクトリを確認してください。

于 2013-02-27T23:43:07.250 に答える
0

Ajax を使用して行う必要があると思います。そうしないと、1 つのフォームが送信されるとすぐに、別の方法に進むことができなくなります。

比較的簡単な jQuery フォーム ライブラリがいくつかあります。たとえば、http://malsup.com/jquery/form/です。

次のようになります。

$('#button-id').click(function() {
  $('.blueForms').ajaxSubmit();
});

もちろん、エラー処理に対処し、すべてのフォームが送信されるのを待つ必要があります。

于 2013-02-27T23:32:09.807 に答える