【发布时间】:2015-08-09 16:26:45
【问题描述】:
我在我的数据库中存储了一个 Url 表,其结构如下:
[条目 1]
Url: ForeignKey(Url)
Referer Url: http://facebook.com/post/123
User Agent: Mozilla etc...
IP: 123.123.123.123
Is under proxy?: True
所有条目都与上述类似。
我需要按 Url 列对所有条目进行分组,然后计算有多少具有相同 Url 列的条目具有相同的 User Agent、IP 和 Referer Url。
有没有办法用 Django ORM 做到这一点?
示例:
Url栏相同的条目:其中12个有XXX推荐,6个有YYY推荐,10个有XXX.XXX.XXX.XXX IP,100个有YYY.YYY .YYY.YYY IP
谁能解释一下这个过程背后的逻辑?
更新好的,伙计们,我自己做的。代码如下:
urls = Url.objects.all() # select all urls
for url in urls: # for each url count how many times the same ip, useragent, etc... are repeated
visits = VisitLog.objects.filter(url=url)
visit_ip = visits.values('ip').annotate(ip_count=Count('ip'))
visit_useragent = visits.values('useragent').annotate(useragent_count=Count('useragent'))
visit_referring_url = visits.values('referring_url').annotate(referring_url_count=Count('referring_url'))
print(visit_referring_url)
现在有没有办法以更优雅的方式做到这一点而无需太多查询?
【问题讨论】:
标签: python django orm group-by