This topic created in 2464 days ago, the information mentioned may be changed or developed.
sql:SELECT ip,COUNT(ip) as num_ip from monitor_healing_servicelog group by ip ORDER BY num_ip desc limit 10;
尝试的官方文档的写法,统计出 ip 重复出现的 top10,所有的结果都是 1
data1 = models.ServiceLog.objects.annotate(num_ip=Count("ip")).order_by("-num_ip")
----
输出 data1[0].num_ip 的结果为 1
5 replies • 2019-09-03 10:58:27 +08:00
 |
|
1
shanguo Aug 30, 2019
这种需要 Count('id') 你试下这个: models.ServiceLog.objects.annotate(num_ip=Count("id")).order_by("-num_ip")
|
 |
|
2
shanguo Aug 30, 2019
忽略上面一条 这种需要先分组 使用 values,然后 Count('id') 你试下这个: models.ServiceLog.objects.values('num_ip').annotate(num_ip=Count("id")).order_by("-num_ip")
|
 |
|
3
676529483 Aug 30, 2019
今天刚写过,有 annotate 和 distinct 的写法,但如果实在不想引入聚合函数,用 raw (我就是这么干的)
|
 |
|
4
zqyisasd Sep 2, 2019
正确用法 data1 = models.ServiceLog.objects.values("ip").annotate(num_ip=Count("ip")).order_by("-num_ip") 返回的是字典,不是 QuerySet
|