1

フォームに、検証エラーが含まれている場合に空白として設定される特定のフィールドが必要です。たとえば、10進数のフィールドが呼び出されprice、その値が無効なblueである場合、フィールドを黙ってnoneに設定したいと思います。

これはクエリ文字列を介して検索フィルターを作成するために使用されるため、より良い解決策がある場合はお知らせください。

編集2

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

フォームが無効にならないように、フォームが無効なフィールド値を処理できるようにしたいと思います。たとえば、私が?q=car&price=100フォームを持っていればうまくいくでしょう。がある場合は?q=car&price=circle、フォームにエラー(値は小数ではありません)を通知しますが、フォームを無効にする代わりに、フィールドを空白にします。

これclean_*は、フィールドタイプ固有ではないエラーを検証するのに役立ちますか?(フィールドタイプ関連のエラーはすでにチェックされ、フォームが無効になっているはずです)。もしそうなら、どうすればこれらのエラーを検出できますか?

私のアプローチはここでは完全に間違っている可能性があります-私は基本的に検索フィルターを作成しようとしています。

4

1 に答える 1

1

それがまさにそのclean_field方法の目的です。たとえば、あなたの例では:

class MyForm(forms.Form):
    ...
    def clean_price(self):
        value = self.cleaned_data['price']
        if value == 'blue':
            value = ''
        return value
于 2013-03-04T21:08:23.157 に答える