Django ORM группировка по усеченному значению поля

Прошу помощи:

Имеется таблица в базе данных

date                 book  news
2021-11-28 10:35:00  11    33
2021-11-28 11:35:00  22    33
2021-11-28 12:35:00  5     6
2021-11-29 13:35:00  67    1
2021-11-29 14:35:00  55    12

Поле date - CharField

Неоходимо чтобы была группировка по дате без времени, т.е 2021-11-28 и максимальное число по столбцу book и news за это число. В итоге необходимо, чтобы в шаблон отправлялся объект:

[{'date': '2021-11-28', 'max_book': '22', 'max_news': '33'},
 {'date': '2021-11-29', 'max_book': '67', 'max_news': '12'}]

Написал класс:

    class test(ListView):
       model = UseTest
       template_name = 'test/use_test.html'
       context_object_name = 'usetest'
       paginate_by = 4
       result = (UseTest.objects
                 .values('date')
                 .annotate(max_book=Max('book'), max_news =('news'))
                 .order_by('-pk')
                 )
       ...

Если я правильно понимаю мы сначала берем значение по полю values('date') для группировки, но надо как-то его сделать усеченным (аналог SELECT LEFT (date, 10) as date) Так же предполагаю, что для начала надо сделать annotate чтобы появилось новое усеченное поле, потом values по новому полю и далее еще раз annotate(max_book=Max('book'), max_news =('news'))

пробовал (F('date')[:10]), но не работает.

Или это делается другими способами, например:

usetest = UseTest.objects.all()
list_usetest = []
for item in usetest:
  date = item.usetest[0:10]
  list_useagentccs.append({'date': date, 'book': item.book, 'news': item.news })
         

А далее уже как-то искать в списке list_usetest максимальные значение book и news и потом этот объект отправлять в шаблон

Вернуться на верх