1つのフィールドをチェックする
CoddyのDjangoジャーニー「フォーム」セクションの一部。レッスン 10/20。
このボードは、昨年の日付のイベントを受け付けます。組み込みのルールは型や制限を把握していますが、あなたのサイト固有の事情は知りません。あるフィールドについて独自のルールを設ける場合は、clean_にフィールド名を続けた名前のメソッドに記述します。スタッフ用にadminという名前を確保する登録フォームは次のとおりです。
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid()はフィールド独自のチェックの後にこのメソッドを呼び出すため、値はすでに変換されています。たとえば、DateFieldは日付を返します。forms.ValidationErrorを発生させると、そのフィールドは拒否され、メッセージがその下に表示されます。
このメソッドは値をreturnしなければなりません。返された値はcleaned_dataに格納されます。returnがないと、値はNoneになります。
チャレンジ
簡単EventFormで、今日より前の日付はメッセージThe date cannot be in the past.とともに拒否してください。今日の日付のイベントは問題ありません。
「実行」を押して、昨日の日付でイベントを追加してください。
自分で試してみよう
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
フォームのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド