1
    queryset = Profile.objects.none()
    for num in temp1:
        queryset |= Profile.objects.filter(subjects_key__contains='-'+str(num)+'-').exclude(user=self.request.user)

所以目前这段代码查询给定 temp1 数组中的每个值。本质上,我想构建一个动态或查询功能,而不管这个数组的长度如何。它运作良好,但唯一的问题是我想保留重复项,因为我需要稍后访问它们的计数。谢谢!

TLDR:合并查询集时如何保留重复项?

4

1 回答 1

2

您可以使用.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参数。

于 2020-12-12T01:43:35.237 回答