我需要对查询集进行两种不同的过滤。
qs1 = qs.filter(name=value)
qs2 = qs.filter(equipment_set__name=value)
然后我需要在不改变顺序的情况下连接它们,就像它们被创建一样。
qs_result = <QuerySet [<qs1 >, <qs2>,]
.union(…)
[Django-doc]:
qs_result = qs1.union(qs2, all=True)
这可以多次产生相同的项目。为了防止这种情况,您删除
all=True
:
qs_result = qs1.union(qs2) # without duplicates
您可以使用 |运算符合并两个查询而不更改查询集中实例的顺序
queryset_1 = A.objects.filter(id__in=[2, 5])
queryset_2 = A.objects.filter(id__in=[3, 4])
queryset_3 = queryset_1 | queryset_2
您也可以稍后对其进行过滤。