Merge two Querysets in Python Django while preserving Queryset methods

from django.db.models import Value from django.db.models.functions import Concat from itertools import chain

queryset1 = Model.objects.filter(...) # Define your first queryset queryset2 = Model.objects.filter(...) # Define your second queryset

Concatenate two querysets while preserving Queryset methods

merged_queryset = queryset1.annotate(source=Value('queryset1', output_field=CharField())) \ .union(queryset2.annotate(source=Value('queryset2', output_field=CharField())))

Get a single queryset while preserving Queryset methods

final_queryset = Model.objects.none() # Create an empty queryset for obj in chain(queryset1, queryset2): final_queryset |= obj

final_queryset # This is the merged queryset with preserved Queryset methods