class EnhancedArticleForm(ArticleForm):
def clean_pub_date(self):
これは Djangobook の例です。Django で「クリーン」と言うとき、実際にはどういう意味ですか? 私はそれを理解しようとするのに苦労しています。
class EnhancedArticleForm(ArticleForm):
def clean_pub_date(self):
これは Djangobook の例です。Django で「クリーン」と言うとき、実際にはどういう意味ですか? 私はそれを理解しようとするのに苦労しています。
これは、1 つ以上のフォーム/モデル フォーム フィールドでカスタム検証を行うための命名規則にすぎません。詳細については、 https://docs.djangoproject.com/en/1.5/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-otherを参照してください。
クリーニングとは、一貫した (適用可能な) 形式に正規化することに他なりません。
フォームが検証されるたびに ( form.is_valid()
)フォームに対してclean()
および が実行clean_<fields>()
され、エラーがある場合は Validation 例外が発生します。
abc.com
たとえば、特定のドメインからのメールのみを受け入れるアプリケーションがあるcnn.com
とします。bbc.com
現在、誰かが let say に登録しようとしxyz.com
た場合、これを確認して検証エラー メッセージを表示するのに最適な場所は、フォーム フィールドのclean
メソッドです。
例:
class RegistrationForm(forms.ModelForm):
def clean_email(self): #clean_<fieldname> is the convention for "clean"ing a specific field
email = self.cleaned_data['email']
#other validations here
if not email.split('@')[1] in ['abc.com', 'bbc.com', 'cnn.com']:
raise ValidationError('Select from following domains.. ')
return self.cleaned_data['email']
さて、これは些細な例でした。
ドメインが にある場合['abc.com', 'bbc.com', 'cnn.com']
、ユーザーはフォームで指定された特別な条件に同意するチェックボックスをオンにする必要があります。
そのためには、相互に依存するフィールドの検証を参照できます
これにより、 の基本的なユースケースclean
とその使用法がわかるはずです。