我发现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',)"
谢谢!
答案 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_datetime
(new_date
)获取支持年份的datetime
(date
)< 1900:
value = datetime_safe.new_datetime(value)
# or:
value = datetime_safe.new_date(value)
另一种选择是自己为表格编写自定义验证器并强制执行年份不低于1900年。