2013-08-24 71 views
0

views.pyDjango表單:沒有「字段錯誤」或「非字段錯誤」。但is_valid返回false

form1 = Form1(temp_arg=obj) 
form2 = Form2() 
if request.method == 'POST': 
    print "submitting form" 
    form1 = Form1(request.POST) 
    form2 = Form2(request.POST) 
    print form1.is_valid    # prints false 
    print form2.is_valid    # prints true 
    print form1.errors    # prints None 
    print form2.errors    # prints None 
    print form1.non_field_errors() # prints None 
    print form2.non_field_errors() # prints None 
    if form1.is_valid() and form2.is_valid(): 
     print "form is valid"  # not executed 
     #some code form.save and all 
    else: 
     print "Error!"    # prints this 

forms.py

@parsleyfy 
class Form1(ModelForm): 
def __init__(self, temp_arg, *args, **kwargs): 
    temp_val = temp_arg 
    super(Form1, self).__init__(*args, **kwargs) 
    self.fields['field1'] = forms.ChoiceField(
     choices=get_field_choices(temp_val)) 
    class Meta: 
     model = Model1 

我有兩種形式。 1表單包含需要動態加載的選擇字段。我爲此寫了一個函數get_field_choices,並從表格的__ init __函數中調用它。直到我爲此添加了temp_argument之後,它才完美運行。現在問題是具有動態加載功能的表單沒有得到驗證。但form.errorsform.non_field_errors什麼都不返回。我無法追查這張表格有什麼問題。

+0

我自己找到答案。我用 'form1 = Form1(temp_arg = obj,data = request.POST)'而不是'form1 = Form1(request.POST)',我用 。它的工作。 – anupsabraham

+0

'form1.is_valid' < - 這不會做你的想法。 –

+0

@Burhan Khalid:你能解釋一下嗎? 任何方式我得到的答案和代碼完美工作。 – anupsabraham

回答

0

代替form1 = Form1(request.POST),我用

form1 = Form1(temp_arg=obj,data=request.POST)。它的工作。

相關問題