バリデーションの一覧

8.4 バリデーションの一覧

Djangoで利用するバリデーションは、Formのサブクラス内で指定を行うことがわかりましたが、上記で紹介したものを含め、バリデーションについて整理していきましょう。

フィールドに入力する値のデータ型によって使用するフィールドは異なるので、メソッド別に一覧にまとめていきたいと思います。

8.4.1 CharFieldのバリデーション

まず文字列を入力できるCharFieldフィールドで扱うことができるバリデーションについて紹介します。

required

必須項目かどうかを設定するためのものです。Trueならば必須項目、反対にfalseであればそうでない設定になります。
またデフォルトでTrueとなっていますので、設定しない場合は必須項目になります。

    class form(forms.Form):
        #必須項目を設定する
        value1 = forms.CharField(required=True)
        #必須項目に設定しない
        value2 = forms.CharField(required=False)
	

min_length, max_length

min_lengthは最小文字数、max_lengthは最大文字数を設定するためのものです。

    class form(forms.Form):
        #最小文字数、最大文字数を設定する
        value1 = forms.CharField(required=True, min_length=5, max_length=10)
	

empty_value

空の入力を許可するかどうかを指定するための設定です。「required」との違いは、requiredがTrueになっている場合、スペースだけを入力した場合も未入力と見なされ、エラーと判定されます。
一方、empty_valueをTrueに設定すると、スペースだけの入力を許可することができます。

    class form(forms.Form):
        #空文字の入力を許可します。
        value1 = forms.CharField(empty_value=True)
	

8.4.2 IntegerFieldのバリデーション

続いて整数値を入力できるIntegerFieldフィールドで扱うことができるバリデーションについて紹介します。

required

先ほどと同じく必須項目かどうかを設定するためのものです。Trueならば必須項目、反対にfalseであればそうでない設定になります。
またデフォルトでTrueとなっていますので、設定しない場合は必須項目になります。

    class form(forms.Form):
        #必須項目を設定する
        num1 = forms.IntegerField(required=True)
        #必須項目に設定しない
        num2 = forms.IntegerField(required=False)
	

min_length, max_length

数値(整数)を入力する項目で、min_lengthは最小値、max_lengthは最大値を設定するためのものです。

    class form(forms.Form):
        #最小文字数、最大文字数を設定する
        num1 = forms.IntegerField(required=True, min_length=5, max_length=10)
	

8.4.3 日時関連(DateField、TimeField、DateTimeField)のバリデーション

DateFieldは、日付データ(datetime.date型)の値しか入力できないフィールドです。
一方、TimeFieldは時刻型のデータ(datetime.time型)の値を入力、DateTimeFieldはその両方の内、どちらかを入力するためのフィールドになります。

input_formats

また日付データの入力について引数input_formatsを使用することで、入力する日付のテキストの形式を指定できます。

形式を指定する際、年、月、日時それぞれは以下のように指定することができます。

  • 年:%y
  • 月:%m
  • 日:%d
  • 時:%H
  • 分:%M
  • 秒:%S

例えば「2021/1/26」のように「年/月/日」で入力させる場合には、「’%Y/%m/%d’」を引数に設定します。

    class form(forms.Form):
        #日付データの入力
        dateDate1 = forms.DateField(input_formats=['%Y/%m/%d'])
        #時刻データの入力
        dateDate2 = forms.TimeField()
        #日付データまたは時刻データの入力
        dateDate3 = forms.DateTimeField()
	

NEXT>> 8.5 本章のまとめ