The UNION operator is used to combine the result-set of two or more querysets.
The querysets can be from the same or from different models. When they querysets are from different models, the fields and their datatypes should match.

>>> q3=EventVillain.objects.all()>>> q3<QuerySet [<EventVillain: EventVillain object (1)>]>>>> q1.union(q3)django.db.utils.OperationalError: SELECTs to the left and right of UNION do not have the same number of result columns

The union operation can be performed only with the querysets having same fields and the datatypes. Hence our last union operation encountered error. You can do a union on two models as long as they have same fields or same subset of fields.

Since Hero and Villain both have the name and gender,
we can use values_list to limit the selected fields then do a union.