Группа модели Django датой даты и времени

Предположите, что у меня есть такая модель:

class Entity(models.Model):
    start_time = models.DateTimeField()

Я хочу перегруппировать их как список списков, которые каждый список списков содержит Объекты с той же даты (тот же день, время должно быть проигнорировано).

Как это может быть достигнуто pythonic способом?

Спасибо

9
задан Hellnar 2 August 2010 в 14:18
поделиться

1 ответ

Создайте небольшую функцию для извлечения только даты:

def extract_date(entity):
    'extracts the starting date from an entity'
    return entity.start_time.date()

Затем вы можете использовать ее с itertools.groupby :

from itertools import groupby

entities = Entity.objects.order_by('start_time')
for start_date, group in groupby(entities, key=extract_date):
    do_something_with(start_date, list(group))

Или, если вам действительно нужен список из списков:

entities = Entity.objects.order_by('start_time')
list_of_lists = [list(g) for t, g in groupby(entities, key=extract_date)]
15
ответ дан 4 December 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: