2016-08-30 10 views
0

form1form2の両方をWebページに表示したいとします。 form2が埋め込まれている場合(if success == True)、ビューを実行しないようにします。if form1.is_valid:私はどのように2つのフォームのフィールドがいっぱいになった私のジャンゴビューで言うことができますか?

(これにはエラーがあります)。 views.pyのsuccessの値にはどのようにアクセスできますか?

あなた <input /><button></button>タグの

forms.py

class Form1(forms.Form): 
    .... 
    .... 
    def clean(self): 
     .... 
     .... 

class Form2(forms.Form): 
    .... 
    .... 
    def clean(self): 
     .... 
     success = False 

views.py

def my_view(request, element_pk): 
    .... 
    .... 
    if request.method == POST: 
     form2 = Form2(request.POST) 
     form1 = Form1(request.POST) 

    if form2.is_valid(): 
     .... 
    if form1.is_valid(): 
     .... 

    else: 
     form2 = Form2() 
     form1 = Form1() 
+0

[この質問](http://stackoverflow.com/questions/1395807/properway-to-handle-multiple-forms-on-one-page-in)で回答を見る必要があるかもしれません。 - ジャンゴ)。 –

+0

@AbzRockersテンプレートファイルには、自分のビューがレンダリングする送信ボタンが1つしかありません。 –

答えて

0

、各フォーム(IE)用のnameパラメータを使用します。

<button type="submit" name="form_1">Go!</button> 

その後あなたの意見では、次のようなことをしてください:

if form2.is_valid() and 'form_2' in request.POST: 
    . . . 
if form1.is_valid() and 'form_1' in request.POST: 
    . . . 
+0

申し訳ありませんが、私はそれについて言及しませんでした。別々のボタンはありません。 –

+0

@amateur_coderフォームに2つの別個のアクションURLがあり、それぞれのフォームを扱うビューが異なります。 – jape

0

設定方法success = Falseは、クリーンメソッドで設定したとおりにローカルに設定されます。クラス(self.success = False)またはcleaned_data(self.cleaned_data['success'] = False、フォームに成功と呼ばれるフィールドがないと仮定して)に値を格納します。

次に、あなたが値にアクセスすることができます:docsを参照してください、

clean機能の詳細については
if form2.is_valid(): 
    success = form2.success 

または

if form2.is_valid(): 
    success = form2.cleaned_data.get('success') 

関連する問題