バリデーションの一覧
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()