我在验证Django中的单个字段时遇到了问题。我所拥有的是以下内容:
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
有人可以帮忙吗?
答案 0 :(得分: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