モデルにstart_dateフィールドとend_dateフィールドがあり、start_dateよりも大きい場合にend_dateにエラーを割り当てたいのですが、ドキュメントを探していましたが、その例は見つかりませんでした。
9242 次
3 に答える
11
チェックを行うカスタムクリーン関数がフォームに必要です。
def clean(self):
cleaned_data = super().clean()
start_date = cleaned_data.get("start_date")
end_date = cleaned_data.get("end_date")
if end_date < start_date:
raise forms.ValidationError("End date should be greater than start date.")
于 2011-09-09T01:41:19.587 に答える
4
これはDjango2.2のアップデートです-doc
from django import forms
from .models import Project
class ProjectAddForm(forms.ModelForm):
class Meta:
model = Project
fields = [
'name',
'overview',
'start_date',
'end_date',
'status',
'completed_on',
]
labels = {
"name": "Project Name",
"overview": "Project Overview",
"status": "Project Status",
}
# Logic for raising error if end_date < start_date
def clean(self):
cleaned_data = super().clean()
start_date = cleaned_data.get("start_date")
end_date = cleaned_data.get("end_date")
if end_date < start_date:
raise forms.ValidationError("End date should be greater than start date.")
于 2019-05-16T07:57:08.433 に答える
3
これは、ドキュメントからの実際の推奨例です
つまり、cleaned_dataを返すことを忘れないでください。また、フォームエラーを正しく発生させてください。
from django import forms
class ContactForm(forms.Form):
# Everything as before.
...
def clean_recipients(self):
data = self.cleaned_data['recipients']
if "fred@example.com" not in data:
raise forms.ValidationError("You have forgotten about Fred!")
# Always return the cleaned data, whether you have changed it or
# not.
return data
于 2014-10-07T10:58:56.800 に答える