django 将 .values_list('datetimefield') 转换为日期

Alb*_*rta 2 python django django-views python-3.x django-rest-framework

我想将带有日期时间对象的 values_list 字段转换为日期对象。

.values_list('time_finished', flat=True)

给我“2016-03-22T18:52:53.486Z”,我想要的是“2016-03-22”

谢谢!

fal*_*tru 6

您可以使用datetime.datetime.date()方法来获取datetime.date对象:

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2016, 4, 12, 15, 54, 48, 401418)
>>> dt.date()
datetime.date(2016, 4, 12)
Run Code Online (Sandbox Code Playgroud)

用于datetime.datetime.strftime获取字符串:

>>> dt.strftime('%Y-%m-%d')
'2016-04-12'
Run Code Online (Sandbox Code Playgroud)
[dt.date() for dt in query.values_list('time_finished', flat=True)]
Run Code Online (Sandbox Code Playgroud)


AKS*_*AKS 5

您可以使用extra直接运行一些数据库功能,例如使用DATE

queryset = queryset.extra(select={'time_finished_date': 'DATE(time_finished)'}).values_list('time_finished_date', flat=True)
Run Code Online (Sandbox Code Playgroud)

如果您从 打印 SQL 查询queryset,它将如下所示:

>>> print(queryset.query)
# SELECT (DATE(time_finished)) AS "time_finished_date" FROM <<tablename>>
Run Code Online (Sandbox Code Playgroud)