我有一个如下所示的模型(省略了一些不相关的字段):
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'))
答案 0 :(得分:3)
如果获得日期时间对象列表,则可以使用映射来解析它。
dates = list(map(lambda date: date.strftime('%d-%m-%Y'), dates))