将first_date和last_date更新为每个期间的客户计数

时间:2017-09-23 01:40:01

标签: 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_week和end_week之间获得一个列表?是否存在有效的算法(具有良好的代码性能)来查找first_datelast_date?如果可能的话,完整的答案将是值得赞赏的。

1 个答案:

答案 0 :(得分:1)

  

找到您可以使用first_datelast_date对象的.first().last()

first_date = User.objects.first().date_joined
last_date  = User.objects.last().date_joined

customers = CustomerProfile.objects.filter(user__date_joined__range=[first_date, last_date])
return customers.count()