我有一个带有三个字段的django模型,我正在努力寻找重复的字段。如果我跑步:cls.objects.values('institution','person','title').annotate(records=Count('person')).filter(records__gt=1).count()
我得到152
作为输出。
但是,如果我尝试查看这些记录是什么,并在不使用count()cls.objects.values('institution','person','title').annotate(records=Count('person')).filter(records__gt=1)
的情况下运行相同的查询我得到<QuerySet []>
。
知道发生了什么事吗?如果我加上.first(),我会得到null,而a[0]会给出一个超出范围的错误,但是计数会继续返回152。直接在数据库上运行SQL显示实际上有152个匹配条目,因此计数是正确的,但我似乎无法返回queryset(或其中的任何元素)。
@JoVi在评论中提到的对GROUP BY的startdate注入是这里的问题。添加它是因为它是django模型定义中的默认排序。将空的.order_by()添加到查询中消除了这一点,并导致查询按预期工作。