每个时期计算客户数

时间:2017-09-24 13:41:17

标签: python django

在我的django项目中,可以使用CustomerProfile.objects.all()向应用程序中的每个客户显示并找到特定客户的创建日期

In [12]: cust = CustomerProfile.objects.get(pk=100)

In [13]: cust.user.date_joined
Out[13]: datetime.datetime(2017, 7, 28, 14, 43, 51, 925548)

In [14]: cust
Out[14]: <CustomerProfile: FistName LastName's customer profile>

根据创建日期,我想列出每天,每周,每月或每年创建的客户数量。结果的一个例子可能是

...
week 28 : [ 09/07/2017 - 15/07/2017 ] - Count : 201 customers
...

我可能需要一个范围start_dateend_date,我们会列出这类信息。 start_date将是第一个客户创建的日期,start_week创建的日期将是first_date的一周。显然,end_date是上次创建客户的日期,last_week是此end_date的一周。

例如,如果我在下拉菜单中选择Per week并在表单中按Apply,我想向我的模型发送信息,这样我可以编码我解释的内容。

到目前为止,我知道如何计算两个日期范围内的客户端数量:

CustomerProfile.objects.filter(user__date_joined__range=["2017-09-03", "2017-09-09"])

我如何在这里更新日期,以便我们可以在start_weekend_week之间获得一个列表? (完整的答案将不胜感激)如果可能的话,完整的答案将是值得赞赏的。我想我可以找到.first().last()对象的第一个和最后一个日期:

first_date = CustomerProfile.objects.first().user.date_joined
last_date  = CustomerProfile.objects.last().user.date_joined

1 个答案:

答案 0 :(得分:0)

你必须使用ORM吗?在SQL中可以解决这个问题:

SELECT
    date_trunc('week', created) as "week_created",
    count(customerprofile)
FROM customerprofile
GROUP BY 1
ORDER BY 1 ASC;

表单可以接受truncate参数,然后启动/停止范围以过滤结果。