将查询集的子集附加到同一查询集(不是逻辑并集)

时间:2020-06-07 05:46:17

标签: django django-queryset

我有一个模特:

class Person(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50) 

如果我这样做:

all_queryset = Person.objects.all()
all_queryset.count() # --> 8

subset_queryset = Person.object.filter(name = 'John')
subset_queryset.count() # --> 1

比方说,我想将subset_queryset附加到all_queryset(甚至重复):

result_qs = all_queryset.union(subset_queryset)
result_qs.count()  # STILL 8!
# or
all_queryset |= subset_queryset
all_queryset.count() # STILL 8!

从某种意义上说,我认为它实际上是一个逻辑联合:如果它是更全局的查询集的子集,则保留全局。 (逻辑交集qith &的对面)。

1 个答案:

答案 0 :(得分:0)

联合会获得一个可选参数all,该参数还将包含重复的行django doc

result_qs = all_queryset.union(subset_queryset, all=True)

相关问题