如何使用Django验证器将日期限制为1900或更高

时间:2012-09-07 17:32:15

标签: python django

我发现this commit显示_datere模式现在需要一个日期> 1900年但......当我今天调查django.core.validators时,我看不到这样的事情(上面提到的提交确实说它是从7年前开始的。)

django中的验证发生了什么,以及Django 1.4.1今天使用什么来获得这种类型的验证?

我问这是因为strftime错误:

"ValueError('year=1800 is before 1900; the datetime strftime() methods require year >= 1900',)"

谢谢!

2 个答案:

答案 0 :(得分:4)

@SimeonVisser非常好地解释了您之前获得此异常的原因以及您不再这样做的原因。

如果仍然希望日期大于1900作为业务逻辑而不是实际的固有限制,那么您应该能够使用内置的Django MinValueValidator。只需输入日期/日期时间1900-01-01,即

validators=[MinValueValidator(datetime(1900, 1, 1, 0, 0))]

答案 1 :(得分:3)

this commit开始,有一个新模块django.utils.datetime_safe支持年份< 1900。

如果您希望支持年份的日期,则可以使用该模块中的strftime。 1900.同样,您可以使用new_datetimenew_date)获取支持年份的datetimedate)< 1900:

value = datetime_safe.new_datetime(value)
# or:
value = datetime_safe.new_date(value)

另一种选择是自己为表格编写自定义验证器并强制执行年份不低于1900年。