Django和#x27的每日复合聚合;s``User``模型'``日期字段(用于用高图作图)
我想使用我的Django和#x27的每日复合聚合;s``User``模型'``日期字段(用于用高图作图),django,date,graph,aggregate,highcharts,Django,Date,Graph,Aggregate,Highcharts,我想使用我的用户模型,并使用日期字段按天对其进行细分。Django似乎很适合,但我不确定如何将其用于DateField对象。我相信我也希望这些价值观能够复合 我的目标是从第一次注册到现在(并继续)最多的人开始,每天得到一个整数。我想我希望这是复合形式的,比如,如果第一天我有100个注册,第二天是80个,我希望第二天的总数是180个。通过这种方式,我可以看到用户基数随着时间的推移而增长/下降,而不仅仅是在没有注册的日子里看到注册峰值和平坦线 开始使用海图作图了。这里是我想要实现的图形的一个实例,仅
用户
模型,并使用日期
字段按天对其进行细分。Django似乎很适合,但我不确定如何将其用于DateField对象。我相信我也希望这些价值观能够复合
我的目标是从第一次注册到现在(并继续)最多的人开始,每天得到一个整数。我想我希望这是复合形式的,比如,如果第一天我有100个注册,第二天是80个,我希望第二天的总数是180个。通过这种方式,我可以看到用户基数随着时间的推移而增长/下降,而不仅仅是在没有注册的日子里看到注册峰值和平坦线
开始使用海图作图了。这里是我想要实现的图形的一个实例,仅使用苹果股票数据,但这或多或少是我想要的,仅使用每天的用户注册量
我可以使用以下示例构建单个实例的查询集。但这并不是一个非常现实的方法。我希望动态计算这些数字,而不是手动分配它们
y2007m09d01=(用户列表。筛选(加入日期\u年=“2007”)。筛选(加入日期\u月=“9”)。筛选(加入日期\u日=“1”)。计数())
y2007m09d02=(用户列表。过滤器(加入日期:2007年)。过滤器(加入日期:9)。过滤器(加入日期:1)。计数()+y2007m09d01)
可能有一些“all django”解决方案,但如果没有,您可以在用户列表上使用。我是这样想的:
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]
另一种方法是首先找出有记录的最早日期时间。以datetime为起点,迭代每一天(直到今天),每次对它进行筛选都会给我一个很好的结果,但我不确定如何引用每个组加入的日期。我想可以引用其中一个包含用户的
date\u joined
字段,因为它们都是相同的(在一个组中)。让我进一步研究一下,在我的示例中,我假设您只需要组列表,但iter组中的列表(g)中的,代表每个组的加入日期,你可以改变理解力,以更适合你的方式来包装结果。我很难理解最后一行。有没有更简洁的方式来表达这一点?我现在理解了\uuu
的用法,但我不确定如何扩展它。更进一步,我想取最后一个结果,每次通过,加上目前为止的总数。。。e、 g.[100,110,150,154,…]
与[100,10,40,4,…]
相比,我建议您在django shell中使用它,直到您了解如何使用groupby的结果(我就是这么做的)。至于添加前面的元素,一旦你得到每个组的总数,你就可以单独添加了。经过一系列的尝试和错误之后,我现在有了组=[dict({uu:len(list(g))})用于iter\u组中的{ug,g]
输出{datetime.datetime(2011,11,16,9,54,31):1}…
现在我必须对总数进行复合。