2016-08-30 14 views
0

我想在网页上同时显示form1form2。如果form2已填充(if success == True),我希望我的视图不会执行if form1.is_valid:在我的django视图中,我怎么能告诉两个表单中的哪些字段填满了?

(它给出错误)。我如何在views.py中访问success的值?

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/proper-way-to-handle-multiple-forms-on-one-page-in -django)。 –

+0

@AbzRockers我的视图呈现的模板文件中只有一个Submit按钮。 –

回答

0

为了您<input /><button></button>标签,使用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你也可以在你的表单上有两个独立的动作url,用不同的视图来处理每个表单。 – jape

0

设置success = False正如您在clean方法中所做的那样,只会在本地进行设置。将值存储在类(self.success = False)或者清空数据(self.cleaned_data['success'] = False,假设您的表单没有称为成功的字段)。

然后,您可以访问该值:

if form2.is_valid(): 
    success = form2.success 

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

有关clean功能的更多信息,请参阅docs

相关问题