【发布时间】:2019-08-05 07:55:50
【问题描述】:
**
我想计算访问过我网站页面的许多唯一 IP,每个 IP 每天的最大访问量 = 1。
**
我有一个不同领域的模型。 其中两个是:
- date: created_at.strftime("%d-%m-%y, %H:%M")
- ip: request_ip
这两个信息的一个例子是:
- 2019-07-15 17:43:09
- 127.0.0.1
我尝试了各种 Django 方法的组合,例如:values、distinct、filter 等。但我无法得到我想要的结果。 因为我无法更改字段的格式,所以 distinct 方法不起作用,因为日期每秒都在变化。如果有像 ("%d-%m-%y) = 没有秒、分和小时这样的日期格式会很好。
这就是下面的例子不起作用的原因。结果,我拥有数据库中的所有 IP。
例子:
ip_number = reward_views.objects.values('request_ip', 'created_at').distinct().count()
所以我尝试将信息、IP 和日期放在列表中,以便修改日期格式并对其进行更好的操作。
try:
all_views = reward_views.objects.all().order_by('-updated_at')
except:
return HttpResponse(status=500)
all_dates = []
for view in all_views:
all_dates.append({
'reward_creation_date': view.created_at.strftime("%d-%m-%y"),
'user_ip': view.request_ip,
})
print (all_dates)
但是我找不到任何正确的方法来计算每天唯一 IP 的总数,并最终计算出所有时间的唯一 IP 总数(每个 IP 每天的最大访问次数 = 1)。
我应该不用任何方法来计算吗?我是否应该将所有 IP 放在一个列表中,将所有日期放在另一个列表中(所有这些都以相同的方式排序),然后尝试删除所有相同的事件?但是如何应用 24H 规则呢?
感谢您的建议!
【问题讨论】:
标签: django django-models django-views