Django список временных меток из DateTimeFields в выходных данных group-by - PullRequest
0 голосов
/ 16 мая 2018

У меня есть модель, которая выглядит следующим образом (некоторые нерелевантные поля были опущены):

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, активность, год user_date), а затем для каждой группы перечислить user_dates из Notes, которые вошли в нее. Следующий набор запросов работает, но список array_agg в конечном итоге представляет собой строку типа [datetime.datetime(2017,1,1,0,0,0),...] или аналогичную, которая не очень легко разбирается.

Есть ли способ, которым я могу ArrayAgg метку времени unix из поля user_date, а не сам объект 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 голосов
/ 16 мая 2018

Если вы получаете список объектов даты и времени, вы можете использовать карту для его анализа.

dates = list(map(lambda date: date.strftime('%d-%m-%Y'), dates))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...