我有一个用户创建页面的应用程序。我想运行一个简单的数据库查询,返回有多少用户创建了超过 2 个页面。
这基本上是我想要做的,但当然这不是正确的方法:
User.objects.select_related('page__gte=2').count()
我错过了什么?
我有一个用户创建页面的应用程序。我想运行一个简单的数据库查询,返回有多少用户创建了超过 2 个页面。
这基本上是我想要做的,但当然这不是正确的方法:
User.objects.select_related('page__gte=2').count()
我错过了什么?
您应该使用聚合。
from django.db.models import Count
User.objects.annotate(page_count=Count('page')).filter(page_count__gte=2).count()
就我而言,我没有.count()
像其他答案那样使用 last ,它也很好用。
from django.db.models import Count
User.objects.annotate( our_param=Count("all_comments")).filter(our_param__gt=12)
将 aggregate() 函数与 django.db.models 方法一起使用!这非常有用,并且不会与其他注释聚合列真正崩溃。*在计算的最后一步使用聚合(),它将你的查询集变成字典。
下面是我使用它们的代码片段。
cnt = q.values("person__year_of_birth").filter(person__year_of_birth__lte=year_interval_10)\
.filter(person__year_of_birth__gt=year_interval_10-10)\
.annotate(group_cnt=Count("visit_occurrence_id")).aggregate(Sum("group_cnt"))