33

djangoで1つの送信ボタンを使用して、2つの異なるフォームを送信することは可能ですか? 「instrument」と呼ばれる 1 つのフォームと、「config」と呼ばれる 4 つの同等のフォームがあります。今度は、常に 1 つの構成と楽器を提出したいと思います。例: 楽器 + 構成 1、および楽器 + 構成 2。すべての構成には、独自の送信ボタンがあります。

構成フォームの1つのボタンで試しました:

<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >

js 関数「onclick」を呼び出します。

submitForms = function(){
    console.log('ok'); //only for testing
    document.forms["firstForm"].submit();
    document.forms["secondForm"].submit();
}

これはviews.pyでの私の方法です:

if request.method == 'POST':
        form1 = dataproviderInstrumentForm(request.POST)
        form2 = dynamicTimeseriesForm(request.POST)
        print(request.POST)
        if form1.is_valid() or form2.is_valid(): 
            # do some stuff

else:
    form1 = dataproviderInstrumentForm() # an unbound form
    form2 = dynamicTimeseriesForm() # an unbound form
4

2 に答える 2

73

<form ..>HTML で複数のタグを使用する代わりに、タグを 1 つだけ使用し<form>、その下にすべてのフォームのフィールドを追加します。

テンプレートの例

<form >
    {{ form1.as_p }}
    {{ form2.as_p }}
    {{ form3.as_p }}
</form>

したがって、ユーザーがフォームを送信すると、すべてのフォーム データがビューに表示され、ビューで行っていることを実行できます。として

if request.method == 'POST':
        form1 = Form1(request.POST)
        form2 = Form2(request.POST)
        print(request.POST)
        if form1.is_valid() or form2.is_valid(): 

そのform prefixような場合に使用することをお勧めします。

だからあなたはすることができます

if request.method == 'POST':
        form1 = Form1( request.POST,prefix="form1")
        form2 = Form2( request.POST,prefix="form2")
        print(request.POST)
        if form1.is_valid() or form2.is_valid(): 
else:
        form1 = Form1(prefix="form1")
        form2 = Form2(prefix="form2")
于 2013-08-28T13:39:38.827 に答える