python - 为什么 Django QuerySet 返回的值比数据库中的对象数(重复对象)多?
问题描述
我正在尝试使用 Django 运行复杂的查询。下面的查询应该返回一个有序的查询集,其中资源最多的用户以及包含与“common_tags”列表中相同标签的资源应该显示在顶部。
代码如下:
is_in_query = Q(resources__tags__name__in=common_tags)
is_not_in_query = ~Q(resources__tags__name__in=common_tags)
#All user count is used to compare number of objects
all_user_count = User.objects.filter(is_private=False)
#len(qs_full) should equal len(all_user_count)
qs_full = (User.objects.filter(is_private=False).annotate(count_resources=Count('resources'))
.annotate(
search_type_ordering=Case(
When(Q(count_resources__gte=6) & is_in_query, then=1),
When(Q(count_resources__gte=3) & Q(count_resources__lte=5) & is_in_query, then=2),
When(Q(count_resources__gte=0) & Q(count_resources__lte=2) & is_in_query, then=3),
When(Q(count_resources__gte=3) & is_not_in_query, then=4),
When(Q(count_resources__gte=0) & Q(count_resources__lte=2) & is_not_in_query, then=5),
default=6,
output_field=IntegerField(),
))
.order_by('-search_type_ordering',)
)
问题:
len(all_user_count) 的输出为 104。 len(qs_full) 的输出为 128。
qs_full 中有重复项。我不知道为什么。
解决方案
推荐阅读
- unit-testing - 无法从 javascript 中的单元测试访问智能合约的变量和方法
- python - 根据条件python检查下一行的答案是否不同?
- javascript - ExtJs Date Picker 显示问题 3.1.0 with Ext.form.DateField
- python - 用 pandas 重新采样时间戳:为什么星期一被计算为错误的一周?
- visual-studio-code - 让每个文件在主窗口的文件夹中,一个接一个,滚动
- r - 从电子邮件创建名称列
- c++ - 没有结构引用的 c++ 函数调用
- lua - 如何解决我在 roblox studio 中遇到的 timestop 问题?
- java - 针对对象评估 Java 中的 FHIR 表达式
- xml - 为什么我会收到错误,XML_IO_FLUSH,使用 xmlDocDump