获取Django查询的相关集合计数
我正在查询数据库,想要找出一个叫做'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
中执行这个查询,看看结果是什么。
另外,发布你的模型和数据库引擎的信息可能也会有帮助,因为这可能和问题有关。