# How Can I Combine Two or More QuerySets in a Django View?

Assume you got two `querysets` from one or more models, and you want the `querysets` to combine into one, for that Django ORM provides a `union` method to combine those querysets. 

The `querysets` can be from the same or from different models, just one thing to note here is that when the `querysets` are from different models, the **fields** and their **data types** must match.

Let’s have a look at this example of combing two `querysets` of same `User` model:

```python
qs1 = User.objects.filter(id__gte=3)
# <QuerySet [<User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>

qs2 = User.objects.filter(id__lte=6)
# <QuerySet [<User: John>, <User: Ricky>, <User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>]>

qs = qs1.union(qs2)
# <QuerySet [<User: John>, <User: Ricky>, <User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>

# We can also switch the places of qs1 and qs2 the results will be same
qs = qs2.union(qs1)
# <QuerySet [<User: John>, <User: Ricky>, <User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>
```

Let's understand how can we combine two `querysets` from two or more difference models: (But before that, keep in mind, when the `querysets` are from different models, the **fields** and their **data types** must match.)

```python
qs1 = Author.objects.values_list('name')

qs2 = Entry.objects.values_list('headline')

qs = qs1.union(qs2)
# django.db.utils.OperationalError: SELECTs to the left and right of UNION do not have the same number of result columns
```

As you can see above that we got a `OperationalError` while performing the union of two `querysets` from different models.

Let’s check out, when we can union two `queryetes` of different models:

```python
qs1 = Hero.objects.all().values_list("name", "gender")

qs2 = Villain.objects.all().values_list("name", "gender")

qs = qs1.union(qs2)
```

Above code will print the correct output without any errors, as we are performing the union based on two columns '**name**' and '**gender**' and both have same **data types**.

***Any thoughts? Write it down in the comments.***

> For more such crispy blogs daily, follow Dev.Junction, subscribe to our newsletter and get notified.
> 

## Social Links

- **LinkedIn:** [https://www.linkedin.com/in/mnamegaurav/](https://www.linkedin.com/in/mnamegaurav/)
- **YouTube:** [https://www.youtube.com/devjunction](https://www.youtube.com/devjunction)
- **Website:** [https://gaurav.devjunction.in/](https://gaurav.devjunction.in/)
- **GitHub:** [https://github.com/mnamegaurav](https://github.com/mnamegaurav)
- **Instagram:** [https://www.instagram.com/mnamegaurav/](https://www.instagram.com/mnamegaurav/)
- **Twitter:** [https://twitter.com/mnamegaurav](https://twitter.com/mnamegaurav)
