Django查询格式化日期时间输出

时间:2014-06-14 20:09:23

标签: python django postgresql datetime

我的Django安装使用PostgreSQL后端。

我在Django视图中执行以下操作:

completedItems = Completed.objects.filter(user_id=1)
return HttpResponse(completedItems.values('item_id','item_name','event_datetime','item_id__item_name'))

对于日期时间字段,返回:

'event_datetime': datetime.datetime(2014, 6, 4, 0, 49, 38, tzinfo=<UTC>)

我正在尝试使用json.dumps序列化返回,这种格式化让我感到悲伤。从查询重新格式化日期时间返回的最佳方法是什么,以便我可以正确地序列化它?

我试图使用:

datetime.strptime('event_datetime',"datetime.datetime(%Y, %m, %d, %H, %M, %S, tzinfo=<%Z>)")

但它抱怨日期与格式字符串不匹配。

2 个答案:

答案 0 :(得分:2)

对于某些查询集中的“ to_char”函数PostgreSQL,可能通过Func注释(来自Django 1.8)

rows = some_queryset.annotate(str_date=Func(F('date'), Value('DD.MM.YYYY'), function='to_char'))

然后行中的每个项目都将'str_date'作为字符串日期,格式为'DD.MM.YYYY'

  • 从django.db.models导入Func,F,Value
  • F('date')中的
  • 'date'是具有日期时间数据的Model字段

答案 1 :(得分:1)

我最终使用.extra注入PostgreSQL&#34; to_char&#34;重新格式化。这是PKKid here建议的解决方案。