ChoiceFieldを動的に作成しようとしています。
そのforms.ChoiceField(choices=val)と作成するとき、あるいは送信するときに
formに悪意のあるテキストなどを防ぐvalidationが標準であったと思うのですが、
もしあればその機能が働くか知りたいです。
ただカスタムバリデーションの記事が多く、標準では何を検証してくれるかは
はっきりわかっていません。
よろしくお願いします。
def validate(self, value): """Validate that the input is in self.choices.""" super().validate(value) if value and not self.valid_value(value): raise ValidationError( self.error_messages['invalid_choice'], code='invalid_choice', params={'value': value}, ) def valid_value(self, value): """Check to see if the provided value is a valid choice.""" text_value = str(value) for k, v in self.choices: if isinstance(v, (list, tuple)): # This is an optgroup, so look inside the group for options for k2, v2 in v: if value == k2 or text_value == str(k2): return True else: if value == k or text_value == str(k): return True return False
def validate(self, value): if value in self.empty_values and self.required: raise ValidationError(self.error_messages['required'], code='required')
EMPTY_VALUES = (None, '', [], (), {}) required=True
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/11 03:10
2021/03/11 12:04
2021/03/11 12:21