2013-03-04 86 views
1

在表单中,如果某个字段包含任何验证错误,那么它们将设置为空白。例如,如果我有一个名为price的小数字段,并且它的无效值为蓝色,我想只是静静地将字段设置为无。Django Forms - 如果字段包含错误,则将字段设置为空白

这将用于通过查询字符串进行搜索过滤器,所以如果有更好的解决方案,请让我知道。

编辑2

class SearchForm(forms.Form): 
    q = forms.CharField() 
    price = forms.DecimalField(required=False) 

我想形式能够以一种形式不会成为无效的处理无效的字段值。例如,如果我有?q=car&price=100该表单将起作用。如果我有?q=car&price=circle,我希望表单注意到错误(值不是小数),但不是使表单无效,只需将该字段留空即可。

clean_*可用于验证非字段类型特定的错误,是吗? (与字段类型相关的错误已经被检查并使表单失效)。如果是这样,我应该如何去检测这些错误?

我的方法在这里可能完全错误 - 我基本上试图创建搜索过滤器。

回答

1

这正是clean_field方法的用途。因此,例如在你的例子中:

class MyForm(forms.Form): 
    ... 
    def clean_price(self): 
     value = self.cleaned_data['price'] 
     if value == 'blue': 
      value = '' 
     return value 
+0

我怎样才能捕获正常的字段验证错误(我会重置字段),所以他们不会最终使我的表单无效? – RS7 2013-03-04 21:49:09

+0

对不起,不知道你问的是我的答案已经没有涵盖。你能给个例子吗? – 2013-03-04 21:52:46

+0

我编辑了我原来的问题。希望有帮助。请让我知道,谢谢 – RS7 2013-03-04 22:03:59

相关问题