Django模型DateField:如何确保两位数年份保存为" 19xx"?

时间:2017-11-13 17:44:12

标签: python django

我有一个表格,用户的生日。默认情况下,Django接受三种日期输入格式,包括MM / DD / YY。但是,如果我输入类似02/13/45的内容,则会保存为02/13/2045。我已经查看了我希望在文档中找到一些线程的地方,但仍然没有。有人能把我推向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

DateField仅uses the datetime.strptime method,后者又使用the underlying C strftime implementation;没有办法改变解析两位数年份的方式。正如评论中所提到的,最好的方法是检查它是否会在未来,然后减去100。

def clean_birthdate(self):
    birthdate = self.cleaned_data('birthdate')
    if birthdate > datetime.datetime.today():
        birthdate = birthdate.replace(year=(birthdate.year-100))
    return birthdate