Django queryset-query和query.count()的结果不同



我有一个带有三个字段的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()添加到查询中消除了这一点,并导致查询按预期工作。

相关内容

  • 没有找到相关文章

最新更新