0

どのフィールドも個別に必要としないフォームがありますが、すべてのフィールドが空のままになっている場合に検証エラーを発生させたいと考えています。これを行う最善の方法は何ですか?私は次のことを試しましたが、うまくいきませんでした:

def clean(self):
    cleaned_data = super(SearchForm, self).clean()
    if len(cleaned_data) == 0:
        raise forms.ValidationError(ugettext_lazy("You must fill at least one field!"))
4

2 に答える 2

3

の長さをチェックするのではなくcleaned_data(フォーム フィールドごとに常に 1 つのエントリが含まれている必要があります)、各エントリをチェックして、値がすべて空であることを確認する必要があります。

これを行う方法の例を次に示します。

def clean(self):
    cleaned_data = super(SearchForm, self).clean()
    form_empty = True
    for field_value in cleaned_data.itervalues():
        # Check for None or '', so IntegerFields with 0 or similar things don't seem empty.
        if field_value is not None and field_value != '':
            form_empty = False
            break
    if form_empty:
        raise forms.ValidationError(ugettext_lazy("You must fill at least one field!"))
    return cleaned_data   # Important that clean should return cleaned_data!
于 2012-04-21T21:05:31.797 に答える
0

空白だけで満たされたフィールドも無視します。and not field_value.isspace()

于 2015-12-07T19:16:38.350 に答える