Форум сайта python.su
Добрый день, задача:
Из этой таблицы нужно получить список типа: arr(дата) = число записей. То есть найти количество записей для каждой даты.
То есть, чтобы список был такой:
arr(дата 1) = 3
arr(дата 2) = 4
arr(дата 3) = 2
Самый простой вариант, это получить список методом values_list('date', flat=True). И “руками” в цикле сделать счётчик:
for d in model.objects.filter(date__range=range).values_list('date', flat=True): arr[d] += 1
Отредактировано hdj (Июнь 30, 2015 19:29:06)
Прикреплённый файлы: рр.png (2,9 KБ)
Офлайн
Можно так:
from django.db.models import Count dict([(x['date'], x['id__count']) for x in model.objects.values('date').annotate(Count('id'))])
Офлайн
так а почему нельзя просто так сделать?
qs = Item.objects.values('date').annotate(count=Count("id")).order_by()
Офлайн
так а почему нельзя просто так сделать?Вы меня спрашиваете?) Так вы вроде тоже самое и написали, разве нет?
Офлайн
lead-inВаш код без order_by() не будет работать так, как вы ожидаете.
Так вы вроде тоже самое и написали, разве нет?
Офлайн
Ваш код без order_by() не будет работать так, как вы ожидаете.
select date, count(id) from "table_name" group by date
Офлайн