**
**
我有一个涉及各个领域的模型。 其中两个是:
- date: created_at.strftime("%d-%m-%y, %H:%M")
- ip: request_ip
这两个信息的示例为:
- 2019-07-15 17:43:09
- 127.0.0.1
我尝试了各种Django方法的组合,例如:值,不同,过滤器等。但是我无法获得想要的结果。 因为我无法更改字段的格式,所以独特的方法将不起作用,因为日期每秒都会更改。设置日期格式为(“%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规则?
感谢您的建议!
答案 0 :(得分:0)
找到了! 我实际上发现了将原始SQL放入Django的可能性。 所以我添加了这个:
cursor.execute('''
SELECT COUNT(
DISTINCT tracker.request_ip,
DATE(tracker.updated_at)
)
FROM tracker;
''')
unique_ips = cursor.fetchone()
别忘了导入:
from django.db import connection
效果很好!这是文档的链接:https://docs.djangoproject.com/en/dev/topics/db/sql/#passing-parameters-into-raw
不过,如果有人知道如何在没有任何原始SQL的情况下做到这一点,请告诉我! :)