Вы можете использовать функцию ExtractHour , чтобы получить час из поля даты и времени, а затем сгруппировать записи в dict
.
Пример кода для вашей справки:
from collections import defaultdict
from django.db.models.functions import ExtractHour
# create a new field to extract hour from timestamp field
actions = Action.objects.annotate(hour=ExtractHour('created'))
# create a default dict to insert a list if key is not exist
results = defaultdict(lambda: [])
for row in actions:
results[row.hour].append(row)
Примечание:
Если вы используете базу данных mysql, пожалуйста, не забудьте загрузить информацию о часовом поясе перед использованием Extract
functions
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql