合并查询集时保留重复项(Django)
Keep duplicates when merging query sets (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],
<b>all=True</b>
)
如文档所述:
To allow duplicate values, use the all=True
argument.
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],
<b>all=True</b>
)
如文档所述:
To allow duplicate values, use the
all=True
argument.