Django Forms - 如果字段包含错误,则将字段设置为空白

时间:2013-03-04 20:39:55

标签: django django-forms

在表单中,如果某些字段包含任何验证错误,我希望将其设置为空白。例如,如果我有一个名为price的十进制字段且其 blue 的值无效,我只想将该字段静默设置为无。

这将用于通过查询字符串创建搜索过滤器,所以如果有更好的解决方案,请告诉我。

修改2

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

我希望表单能够以表单不会变为无效的方式处理无效字段值。例如,如果我有?q=car&price=100,表单就可以了。如果我有?q=car&price=circle,我希望表单能够注意到错误(值不是十进制),但不要使表单无效,只需将该字段设为空白即可。

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

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

1 个答案:

答案 0 :(得分:1)

这正是clean_field方法的用途。例如,在您的示例中:

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