222👍
✅
This works and looks a bit cleaner:
records = query1 | query2
If you don’t want duplicates, then you will need to append .distinct()
:
records = (query1 | query2).distinct()
69👍
Starting from version 1.11, django querysets have a builtin union method.
q = q1.union(q2) #q will contain all unique records of q1 + q2
q = q1.union(q2, all=True) #q will contain all records of q1 + q2 including duplicates
q = q1.union(q2,q3) # more than 2 queryset union
See my blog post on this for more examples.
- [Django]-What does "'tests' module incorrectly imported" mean?
- [Django]-Pytest.mark.parametrize with django.test.SimpleTestCase
- [Django]-How can I call a custom Django manage.py command directly from a test driver?
10👍
I would suggest using ‘query1.union(query2)’ instead of ‘query1 | query2’;
I got different results from the above two methods and the former one is what I expected.
The following is what I had come across:
print "union result:"
for element in query_set1.union(query_set2):
print element
print "| result:"
for element in (query_set1 | query_set2):
print element
result:
union result:
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
| result:
KafkaTopic object
KafkaTopic object
- [Django]-In Django, how do I check if a user is in a certain group?
- [Django]-How to set True as default value for BooleanField on Django?
- [Django]-Django/DRF – 405 Method not allowed on DELETE operation
Source:stackexchange.com