在我的Django程序中,我在尝试保存到数据库时抛出以下异常:
[u"'2015-09-17 00:00:00' value has an invalid date format. It must be in YYYY-MM-DD format."]

2015-09-17的日期看起来不错,但显然我错过了什么?
数据库字段的定义如下:
date = models.DateField(blank=True, null=True)

答案 0 :(得分:2)
问题在于时间00:00:00 如果删除它,可能会有效。
答案 1 :(得分:2)
您收到的字符串包含有关日期和时间的信息。但是,用于在数据库中保存该信息的字段是导致错误的DateField
。
您需要将收到的日期时间对象的字符串表示形式转换为Python datetime.date
对象。
这可以使用.strptime()
来完成,here返回与传递给它的日期字符串相对应的datetime
对象以及用于解析它的格式。然后,我们可以在其上调用.date()
来获取日期对象。
In [1]: from datetime import datetime
In [2]: received_datetime_repr = '2015-09-17 00:00:00' # string representation of datetime object
In [3]: received_datetime = datetime.strptime(received_datetime_repr, '%Y-%m-%d %H:%M:%S') # convert to datetime object
In [4]: received_datetime
Out[4]: datetime.datetime(2015, 9, 17, 0, 0)
In [5]: my_date_obj = received_datetime.date() # convert to date object
In [6]: my_date_obj
Out[6]: datetime.date(2015, 9, 17) # required value
此处,my_date_obj
是您要在db中保存的所需值。
答案 2 :(得分:1)
您正在尝试保存并解析日期和时间。这是无效的。
您可以使用DateTimeField而不是DateField,也可以编写自定义日期格式。请参阅:https://docs.djangoproject.com/en/1.8/ref/settings/#date-format但我会反对它 - localozations存在问题。
只需遵守日期格式而非日期时间格式。