Django ChoiceField "指定された値が選択肢のリストに存在することを検証します。"
ChoiceField が必要ですが (ビューに選択肢を入力できるようにするため)、選択肢が選択肢のリストにあるかどうかを Django に確認させたくありません。理由を説明するのは複雑ですが、これが必要です。これはどのように達成されますか?
Django ChoiceField "指定された値が選択肢のリストに存在することを検証します。"
ChoiceField が必要ですが (ビューに選択肢を入力できるようにするため)、選択肢が選択肢のリストにあるかどうかを Django に確認させたくありません。理由を説明するのは複雑ですが、これが必要です。これはどのように達成されますか?
検証をスキップするカスタムChoiceField
とオーバーライドを作成できます。
class ChoiceFieldNoValidation(ChoiceField):
def validate(self, value):
pass
あなたがこれを必要とする理由が本当に思いつかないので、あなたのユースケースを知りたいです。
編集:テストするには、フォームを作成します:
class TestForm(forms.Form):
choice = ChoiceFieldNoValidation(choices=[('one', 'One'), ('two', 'Two')])
「無効な」データを提供し、フォームがまだ有効かどうかを確認します。
form = TestForm({'choice': 'not-a-valid-choice'})
form.is_valid() # True
別のオプションとして、独自のバリデータを作成できます
from django.core.exceptions import ValidationError
def validate_all_choices(value):
# here have your custom logic
pass
そしてあなたの形で
class MyForm(forms.Form):
my_field = forms.ChoiceField(validators=[validate_all_choices])
編集: 別のオプションとして、フィールドを として定義することもできますがCharField
、選択した選択としてテンプレートで手動でレンダリングします。このようにして、カスタムバリデータを必要とせずにすべてを受け入れることができます