使用Django的ModelForm时出现ValidationError
我刚接触Django,正在做一个小项目,里面用到了ModelForm
。对于日期字段,我想进行自定义验证,也就是说,如果用户输入的日期早于今天的日期,就应该在日期字段旁边显示一个错误信息。我按照Django的文档写了代码,但在模型表单中,raise语句给我带来了ValidationErrors,像下面这样:
ValidationError at /add_task/
[u"Please enter valid date. Either today's date or after that."]
请帮我解决这个问题。提前谢谢你。
models.py
from django.db import models
class MyTask(models.Model):
summary=models.CharField(max_length=100)
description=models.CharField(max_length=500)
due_date=models.DateField(null=True)
completed_status=models.BooleanField()
def __unicode__(self):
return self.summary
forms.py
from django.forms import ModelForm, Textarea
from django.forms.extras.widgets import SelectDateWidget
from django.core.exceptions import ValidationError
from assignment.models import MyTask
import datetime
class AddTaskForm(ModelForm):
class Meta:
model=MyTask
fields=('summary','description','due_date')
widgets = {
'description': Textarea(attrs={'cols': 50, 'rows': 10}),
'due_date':SelectDateWidget(),
}
def get_due_date(self):
diff=self.cleaned_data['due_date']-datetime.date.today()
if diff.days<0:
raise ValidationError("Please enter valid date. Either today's date or after that.")
else:
return self.cleaned_data['due_date']
def get_summary(self):
return self.cleaned_data['summary']
def get_description(self):
return self.cleaned_data['description']