3

我发现这个显示模式的提交_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',)"

谢谢!

4

2 回答 2

5

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

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

validators=[MinValueValidator(datetime(1900, 1, 1, 0, 0))]
于 2012-09-07T19:26:17.210 回答
3

截至本次提交,有一个新模块django.utils.datetime_safe支持年份 < 1900 的日期。

strftime如果您希望支持年份 < 1900 的日期,则可以从该模块中使用。类似地,您可以使用( new_datetime)new_date获得支持年份 < 1900 的datetime( date):

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

另一种选择是自己为表单编写一个自定义验证器,并强制年份不少于 1900。

于 2012-09-07T17:42:06.303 回答