Menu
CoddyTech

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 username

is_valid()はフィールド独自のチェックの後にこのメソッドを呼び出すため、値はすでに変換されています。たとえば、DateFieldは日付を返します。forms.ValidationErrorを発生させると、そのフィールドは拒否され、メッセージがその下に表示されます。

このメソッドは値をreturnしなければなりません。返された値はcleaned_dataに格納されます。returnがないと、値はNoneになります。

challenge icon

チャレンジ

簡単

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プレイグラウンド