Ежедневная составная агрегация поля `` User`` models '`` date_joined`` Django (для построения графиков с помощью Highcharts) - PullRequest
0 голосов
/ 02 декабря 2011

Я хотел бы взять мою модель User и разбить ее по дням, используя поле date_joined. агрегация в Django кажется подходящей, но я не уверен, как использовать это с объектом DateField.Я считаю, что я также хочу, чтобы значения составляли.

Моя цель - получить целое число за каждый день, начиная с самой первой регистрации до самых настоящих (и продолжающихся).Я думаю Я хочу это в сложной форме, поэтому, например, если в первый день у меня есть 100 регистраций, а на следующий день - 80, я хочу, чтобы общее количество вторых дней было 180. Таким образом, я могу видетьпользовательская база растет / падает со временем, а не просто видит всплески регистрации, а затем выравнивается по дням, когда регистрации отсутствуют.

Довольно настроено использование Highcharts для построения графиков.Вот живой пример графика, который я хочу реализовать, используя только данные акций Apple, но это более или менее то, что я хочу, только с ежедневными количествами пользователей.http://www.highcharts.com/stock/demo/basic-line

Я могу создать QuerySet для одного экземпляра в следующем примере.Это не очень реалистичный подход в будущем.Я хотел бы динамически вычислять эти цифры, а не назначать их вручную.

y2007m09d01=(user_list.filter(date_joined__year="2007").filter(date_joined__month="9").filter(date_joined__day="1").count())<br> y2007m09d02=(user_list.filter(date_joined__year="2007").filter(date_joined__month="9").filter(date_joined__day="1").count() + y2007m09d01)

1 Ответ

1 голос
/ 02 декабря 2011

Для этого может быть какое-то решение "all django", но если нет, вы можете просто использовать itertools.groupby в списке пользователей.Я думаю что-то вроде этого:

from itertools import groupby
from operator import attrgetter

iter_groups = groupby(User.objects.all(), attrgetter('date_joined'))
groups = [list(g) for _, g in iter_groups]
...