Django分组输出中DateTimeFields的时间戳列表

时间:2018-05-16 03:38:19

标签: python django python-3.x

我有一个如下所示的模型(省略了一些不相关的字段):

class Note(models.Model):
    enterprise_id = models.IntegerField(db_index=True)
    field_id = models.IntegerField()
    activity = models.TextField(choices=ACTIVITY_CHOICES)
    user_date = models.DateTimeField()

我希望(以SQL术语)组合(enterprise_id,field_id,activity,user of user_date),然后为每个组列出进入它的Notes中的user_dates。以下查询集有效,但array_agg列表最终是一个字符串,如[datetime.datetime(2017,1,1,0,0,0),...]或类似字符串,不易解析。

有没有办法ArrayAgg来自user_date字段的unix时间戳,而不是datetime对象本身?或者失败了,ArrayAgg(年,月,日)的元组可以解析它吗?

qs = self.get_queryset()\
            .annotate(year=ExtractYear('user_date'))\
            .values('activity', 'enterprise_id', 'field_id', 'year')\
            .order_by('activity', 'enterprise_id', 'field_id', 'year') \
            .annotate(dates=ArrayAgg('user_date'))

1 个答案:

答案 0 :(得分:3)

如果获得日期时间对象列表,则可以使用映射来解析它。

dates = list(map(lambda date: date.strftime('%d-%m-%Y'), dates))