clean_fieldメソッド
clean_fieldメソッド
clean_fieldメソッドを使うことでバリデーションを定義出来ます。
バリデーションとはformの値を適切かどうかを検証するものです。
このようなformがあるとします。
forms.py
from django import forms
class TodoForm(forms.Form):
title = forms.CharField(label="タイトル")
detail = forms.CharField(label="詳細", widget=forms.Textarea)
例えばこのtitle
の文字数を最低2文字以上にしたいとしましょう。
その場合は下のように書きます。
from django import forms
from django.core.exceptions import ValidationError
class TodoForm(forms.Form):
title = forms.CharField(label="タイトル")
detail = forms.CharField(label="詳細", widget=forms.Textarea)
def clean_title(self):
title = self.cleaned_data.get('title')
if len(title) < 2:
raise ValidationError("短すぎです。2文字以上にしてください。")
return title
clean_title
という関数がありますね。
DjangoのFormでは
clean_field
を使ってバリデーションを自分で定義することが出来ます。
上の例で言うとdetail
というフィールドにバリデーションをかけるなら
def clean_detail(self)
のように使います。
title = self.cleaned_data.get('title')
self.cleaned_data.get('フィールド名')
でそのフィールドに入力された値を取得出来ます。
if len(title) < 2:
raise ValidationError("短すぎです。2文字以上にしてください。")
タイトルが2文字未満なら
短すぎです。2文字以上にしてください。
これがerror_massages
に入ります。
例えば
<div class="row">
<div class="col-sm-7 col-md-6 mx-auto">
<label for="{{ form.title.id_for_label }}">{{ form.title.label }}</label>
{{ form.title }}
{% for error in form.title.errors %}
<p class="">{{ error }}</p>
{% endfor %}
</div>
</div>
Templateがこのような場合だと
<p class="">{{ error }}</p>
ここに
短すぎです。2文字以上にしてください。
と表示されます。
Just Python フリープラン
ジャスパイなら教材は全て無料!