1

我有一个 QuerySet 我想按related_name. 目前我有这样的事情:

objResults = myObjects.filter(Q(links_by_source__status=ACCEPTED),Q(links_by_source__count=1))

但是,当我运行它时,我收到以下错误消息:

Cannot resolve keyword 'count' into field

我猜这个查询在每个links_by_source连接上单独运行,因此没有count功能,因为它不是我正在使用的 QuerySet。有没有一种过滤方法,对于返回的每个对象,数量links_by_source正好是 1?

4

1 回答 1

2

您需要使用聚合函数来获取计数,然后才能对其进行过滤。

from django.db.models import Count
myObjects.filter(
  links_by_source__status=ACCEPTED).annotate(link_count=Count('links_by_source')
).filter(link_count=1)

请注意,您应该注意此处的注释和过滤顺序:该查询计算 ACCEPTED 链接的数量,不确定您是否想要或者您想要检查所有链接的总数是否为 1。

于 2014-03-04T12:11:25.520 回答