【发布时间】:2018-05-20 21:04:50
【问题描述】:
我尝试验证我的 DateField 以仅接受今天和未来的日期,但我不知道为什么它仍然接受每个过去的日期。
我的 models.py 文件:
def present_or_future_date(value):
if value < datetime.date.today():
raise models.ValidationError("The date cannot be in the past!")
return value
class Event(models.Model):
title = models.CharField(max_length=50)
text = models.TextField()
date = models.DateField(default=datetime.now, validators=[present_or_future_date])
duration = models.TextField(default='0', blank='true')
created_at = models.DateTimeField(default=datetime.now, blank='true')
def __str__(self):
return self.title
【问题讨论】:
-
你的代码在
validators之后真的缺少=吗? -
对不起,只是我在复制、编辑时出错。但这不是问题。
-
何时接受这些日期?如果只是在
Model.save()上,默认情况下不会运行验证器。 -
当它重定向到我的“add.html”并且用户输入他的数据时,他点击提交并继续保存到数据库。此字段无信息无验证:/
-
查看处理此问题的表单会有所帮助。验证器应自动包含在
ModelForm中,但不会隐含在自定义表单中。
标签: django validation datefield