how can I change the format of a datefield in models?
我想在我的django模型类中存储一些数据。我需要存储的日期的格式是mm/dd/yy,但django日期字段的默认格式是yyyy-mm-dd,因此我得到了此错误django.core.exceptions.validationError:"'10/05/1997"值的日期格式无效。它必须是YYYY-MM-DD格式。"]. 如何解决此问题?我没有使用任何窗体,因此不能使用Forms.DateField及其DateField而不是DateTimeField
可以使用Python标准库中的datetime模块在不同的日期格式之间进行转换。
在您的情况下,您可以将显示格式定义为"mm/dd/yyy"和"yyyy-mm-dd"作为存储格式,并生成用于存储的日期字符串,如下所示:
1 2 3 4 5 6 7 | >>> import datetime >>> display_format = '%m/%d/%Y' >>> db_format = '%Y-%m-%d' >>> date = '10/05/1997' >>> db_date = datetime.datetime.strptime(date, display_format).strftime(db_format) >>> print(db_date) 1997-10-05 |
从存储格式转换为显示格式类似:
1 2 3 | >>> display_date = datetime.datetime.strptime(db_date, db_format).strftime(display_format) >>> print(display_date) 10/05/1997 |
号
或者,您可以将字符串拆分为多个部分,然后使用所需的分隔符按所需的顺序将其重新连接到一起:
1 2 3 4 5 6 7 8 | >> date = '10/05/1997' >>> month, day, year = date.split('/') >>> month, day, year ('10', '05', '1997') >>> >>> db_date = '-'.join((year, month, day)) >>> print(db_date) 1997-10-05 |
要从存储格式转到显示格式:
1 2 3 4 | >>> year, month, day = db_date.split('-') >>> display_date = '/'.join((month, day, year)) >>> print(display_date) 10/05/1997 |
。