合并查询集时保留重复项(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.