获取Django查询的相关集合计数

0 投票
3 回答
1672 浏览
提问于 2025-04-17 11:14

我正在查询数据库,想要找出一个叫做'item'的相关集合的数量。

user_lists = List.objects.filter(user=user).select_related('city','city__country')

这个查询能找到我想要的项目,但为了加上相关集合的数量,我在查询中添加了一个注释(annotate):

user_lists = List.objects.filter(user=user).select_related('city','city__country').annotate(item_count=Count('item'))

但是,这样做从数据库中返回的结果是空的。有人知道为什么吗?我没有收到任何错误提示,只是得到了一个空的查询结果。

3 个回答

0

也许你可以使用 count() 方法来计算 QuerySet 中的项目数量: count()

user_lists_count = List.objects.filter(user=user).select_related('city','city__country').count()

这样可以吗?

希望这正是你想要的。

0

我刚发现问题出在 item_count 这个变量上。当我用 total_items 时,一切都正常。

0

这不是一个真正的答案,只是一个调查的想法:你可以查看实际执行的查询,方法是用print str(some_queryset.query)来打印出来。然后你可以尝试在manage.py dbshell中执行这个查询,看看结果是什么。

另外,发布你的模型和数据库引擎的信息可能也会有帮助,因为这可能和问题有关。

撰写回答