django - 合并查询集时保留重复项(Django)
问题描述
queryset = Profile.objects.none()
for num in temp1:
queryset |= Profile.objects.filter(subjects_key__contains='-'+str(num)+'-').exclude(user=self.request.user)
所以目前这段代码查询给定 temp1 数组中的每个值。本质上,我想构建一个动态或查询功能,而不管这个数组的长度如何。它运作良好,但唯一的问题是我想保留重复项,因为我需要稍后访问它们的计数。谢谢!
TLDR:合并查询集时如何保留重复项?
解决方案
您可以使用.union(…)
[Django-doc]。因此,您可以将其简化为:
from django.db.models import Q
qs = Profile.objects.none().union(
*[Profile.objects.filter(
~Q(user=self.request.user),
subjects_key__contains='-'+str(num)+'-'
) for num in tmp1],
all=True
)
正如文档所说:
要允许重复值,请使用
all=True
参数。
推荐阅读
- javascript - 在简单的 Angular 6 应用程序中设置 Webpack 4 时出现未捕获的 TypeError
- sql - 如何在 Postgres 9.3 中 +=
- java - 从泛型类中获取枚举列表
- ios - 无法将 iOS 应用程序上传到具有特定框架的商店
- html - 如何在 CSS 中使用 :before 使内容居中
- php - Cassandra + Solr 的顺序不正确,节点少
- c# - 字符串和最后一位数字之间的正则表达式匹配
- amazon-web-services - AWS S3 静态存储桶托管-内部服务器错误
- javascript - 延续传递风格和并发性
- javascript - div跟随光标的困难