2011-07-13 15 views
0

我有一個從.is_valid()返回False的表單,但.errors.non_field_errors()看起來是空的。有沒有其他的方法來檢查可能造成這種情況的原因?django:基於類的表單沒有錯誤,但無效。發生什麼事?

在情況下,它與我的日誌代碼的一個問題,那就是:

logger.debug('form.non_field_errors(): ' + str(form.non_field_errors())) 
logger.debug('form.errors: ' + str(form.errors)) 

我的表單代碼:

class IncorporateForm(forms.Form): 
     type_choices = (("LTD", "Private company limited by shares"), 
         ("LTG", "Private company limited by guarantee"), 
         ("PLC", "Public limited company"), 
         ("USC", "Unlimited company with share capital"), 
         ("UWS", "Unlimited company without share capital")) 

     country_choices = (("EW", "England and Wales"), 
          ("CY", "Wales"), 
          ("SC", "Scotland"), 
          ("NI", "Northern Ireland")) 

     articles_choices = (("MOD", "Model articles"), 
          ("AMD", "Model articles with amendments"), 
          ("BES", "Entirely bespoke articles")) 

     name = forms.CharField(initial = "[name] limited") 

     registered_office = forms.CharField(widget=forms.Textarea, 
              label='Registered office address') 

     registration_country = forms.ChoiceField(choices=country_choices, 
               widget=forms.RadioSelect(renderer=SaneRadioField)) 

     company_type = forms.ChoiceField(choices=type_choices, 
             widget=forms.RadioSelect(renderer=SaneRadioField), initial="LTD") 

     articles_type = forms.ChoiceField(choices=articles_choices, 
              initial='MOD', 
              widget=forms.RadioSelect(renderer=SaneRadioField)) 

     restricted_articles = forms.BooleanField() 

     arts_upload = forms.FileField(label='Articles to upload') 

我的視圖代碼(在那裏我發現該形式是點無效):

def incorporate_view(request): 
     form = IncorporateForm() 
     DirectorsFormset = forms.formsets.formset_factory(OfficerForm, extra=30) 
     CapitalFormset = forms.formsets.formset_factory(CapitalForm, extra=30) 
     HoldingFormset = forms.formsets.formset_factory(HoldingForm, extra=30) 
     AmendsFormset = forms.formsets.formset_factory(ArticlesAmendsForm, extra=50) 

     if request.method == 'POST': 
       #bind and validate 
       form.data = request.POST 
       guarantee_form = GuaranteeForm(data=request.POST) 
       directors_formset = DirectorsFormset(prefix='directors', data=request.POST) 
       capital_formset = CapitalFormset(prefix='capital', data=request.POST) 
       holding_formset = HoldingFormset(prefix='holding', data=request.POST) 
       amends_formset = AmendsFormset(prefix='amends', data=request.POST) 
       save_objects = [] # objects to be saved at the end if there is no error 
       user_objects = {} # keyed by email 
       individual_objects = {} # keyed by email? 

       if(not (form.is_valid() and guarantee_form.is_valid() 
         and directors_formset.is_valid() 
         and capital_formset.is_valid() and 
         holding_formset.is_valid() and 
         amends_formset.is_valid())): 
         dbg_str = """ 
         form.is_valid(): %s 
         guarantee_form.is_valid(): %s 
         directors_formset.is_valid(): %s 
         capital_formset.is_valid(): %s 
         holding_formset.is_valid(): %s 
         amends_formset.is_valid(): %s 
         """ % (form.is_valid(), guarantee_form.is_valid(), 
           directors_formset.is_valid(), 
           capital_formset.is_valid(), 
           holding_formset.is_valid(), 
           amends_formset.is_valid()) 
         logger.debug(dbg_str) 
         logger.debug('form.non_field_errors(): ' + str(form.non_field_errors())) 
         logger.debug('form.errors: ' + str(form.errors)) 
+1

你可以添加你的視圖和表單代碼嗎? –

回答

3

分配給form.data不綁定表格 - 你應該通過dat當構造對象時(或者查看代碼並查看哪些標記已設置,但可能沒有記錄並因此不推薦)。

+0

謝謝!現在全部修好了。 – Marcin

相關問題