在Django中验证ModelForm的单个字段

时间:2015-11-05 18:10:04

标签: python django validation

我在验证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

有人可以帮忙吗?

1 个答案:

答案 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