2

米国の州を表す MultipleChoiceField があり、フォームに GET リクエストを渡すと、次のような?state=AL%2CAKエラーが発生します。

Select a valid choice. AL,AK is not one of the available choices.

ただし、これらの値はフォーム フィールドに正しくレンダリングされるため、フィールドの選択肢に確実にリストされます。

値をリストに変換するために、フォームにカスタムの clean_state() メソッドを指定しようとしましたが、効果がありません。clean_data['state'] を印刷すると、request.GET からのデータで呼び出されていないことが示されているようです。

このエラーの原因は何ですか?

from django import forms
class MyForm(forms.Form):
    state = forms.MultipleChoiceField(
        required=False,
        choices=[('AL','Alabama'),('AK','Alaska')],
    )
4

1 に答える 1

0

MultipleChoiceFields は、リスト内の選択されたすべての値を渡すのではなく、代わりに同じキーに対していくつかの異なる値を渡します。

つまり、'AL' と 'AK' を選択した場合、クエリ文字列?state=AL&state=AK?state=AL%2CAK.

カスタムclean_state()メソッドを見ないと何が問題なのかわかりませんが、クエリ文字列が間違っているために状態フィールドが有効でない場合、「状態」はcleaned_dataにはありません(cleaned_dataは有効なデータのみを保持するため)。

うまくいけば、それは役に立ちます。それでも行き詰まっている場合は、さらに詳細を追加してみてください。より具体的にすることができます。

于 2013-07-14T00:56:32.857 に答える