2017-02-04 103 views
0

我改變了我的所有帖子。Django驗證模型表格

我無法處理在我的模板中引發錯誤。我寫了清潔方法對我的形式:

def clean(self): 
    cleaned_data = super().clean() 
    subcategory = cleaned_data['subcategory'] 
    subcategory1 = cleaned_data['subcategory1'] 
    if subcategory1 and (subcategory == subcategory1): 
     raise forms.ValidationError("ERROR") 
    else: 
     print('OKKKKKKKKKK') 

我的觀點:

if request.method == 'POST': 
    form_extended = SiteAddFormFull(request.POST) 
    if form_extended.is_valid(): 
     form_extended.save() 
     messages.add_message(request, messages.SUCCESS, 'Success!!') 
    else: 
     messages.add_message(request, messages.ERROR, 'Error!!') 
     print(form_extended.errors) 

爲什麼當我打開我的表單視圖我得到「OKKKKKKKKKK」(中端)從我的乾淨(個體經營)方法和我的模板視圖'錯誤!!'出現......?我想從我的清潔方法顯示錯誤,但我不知道現在該怎麼辦呢....

+0

問題是什麼?這是不是驗證?你沒有問一個問題。 –

+0

我很抱歉我的錯誤。我編輯了我的帖子。 – jundymek

+0

如果您的縮進是正確的,您已將'clean()'方法添加到表單的Meta類,而不是表單本身。 – trixn

回答

0

如果您的格式是正確的,然後你的clean方法是在Meta類的ModelForm類。嘗試將其標識回去,以便它屬於您的ModelForm類別,而不是其元類別,例如,如下所示:

class YourCustomModelForm(django.forms.ModelForm): 
    class Meta: 
     model = Site 
     fields = ('url', 'name', 'description', 'keywords', 'group', 'category', 
       'subcategory', 'category1', 'subcategory1') 

    def clean(self): 
     cleaned_data = super(YourCustomModelForm, self).clean() 
     subcategory = cleaned_data['subcategory'] 
     subcategory1 = cleaned_data['subcategory1'] 
     if subcategory == subcategory1: 
      raise forms.ValidationError('ERROR') 
+0

我試過了。我得到一個關鍵錯誤:http://dpaste.com/18Q79JW – jundymek

+0

不知道但用'super()'調用父類的方法而不提供參數也可能是問題。你正試圖用'super()。clean()'''''''''''''''''''''''''來調用'ModelForm''clean'方法,這是不推薦的。 – sehrob

+0

如果沒有成功,請嘗試使用'self.cleaned_data'訪問'cleaned_data'。欲瞭解更多信息看看這裏:https://docs.djangoproject.com/en/1.10/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other – sehrob