2015-11-05 148 views
0

我在驗證Django中的單個字段時遇到問題。我有以下內容:驗證Django中ModelForm的單個字段

class MoForm(ModelForm): 
    def check_for_zero_cost(self): 
    cost = self.cleaned_data['total_cost'] 
    if cost <= 0: 
     raise forms.ValidationError("You value is less than zero") 
    return cost 

當我嘗試驗證時,出現異常。這出來作爲

global name 'forms' is not defined 

我試圖ValidationError("You value is less than zero")沒有點forms,但是這引發一個異常,我要的是剛剛被添加到形式錯誤列表錯誤。認爲我得到這個錯誤的原因是因爲我沒有forms.ModelForm作爲我班的第一個參數。如果我這樣做,然後我得到以下錯誤:

name 'forms' is not defined 

任何人都可以幫忙嗎?

+1

您需要導入它。 'from django import forms' –

+0

你是怎麼調用這個方法的?通常,驗證在'clean()'或'clean_ ()'方法中進行。 –

回答

1

你不應該編寫自己的方法來驗證單個表單字段。您應該使用clean_<fieldname>()方法(在這種情況下,它的格式爲clean_total_cost),這裏是doc

from django import forms 

class QuoteForm(forms.ModelForm): 
    def clean_total_cost(self): 
     total_cost = self.cleaned_data['total_cost'] 
     if total_cost <= 0: 
      raise forms.ValidationError("Your value is less than zero") 

     return total_cost