【问题标题】:Django Forms - set field as blank if field contains errorsDjango Forms - 如果字段包含错误,则将字段设置为空白
【发布时间】:2013-02-19 01:56:43
【问题描述】:

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

这将用于通过查询字符串制作搜索过滤器,因此如果有更好的解决方案,请告诉我。

编辑 2

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

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

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

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

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

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

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

    【讨论】:

    • 我怎样才能捕捉到正常的字段验证错误(然后我会重置字段),以免它们最终使我的表单无效?
    • 抱歉,我的回答尚未涵盖您要问的问题。能举个例子吗?
    • 我已经编辑了我原来的问题。希望这会有所帮助。请告诉我 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 2022-11-08
    • 2016-03-15
    • 2016-02-07
    • 2013-10-02
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多