It seems that Django's object model filter method automatically uses the AND SQL keyword.
For example:
>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A")
will automatically translate into something like:
SELECT ...
FROM publisher
WHERE name LIKE '%press%'
AND country LIKE '%U.S.A.%'
However, I was wondering whether there was a way to make that 'AND' an 'OR'? I can't seem to find it in the documentation (oddly enough, searching for 'or' isn't really useful).
The filter() method is used to filter you search, and allows you to return only the rows that matches the search term.
To filter a Python Django query with a list of values, we can use the filter method with in . to search Blog entries with pk set to 1,4 or 7 by calling Blog. objects. filter with the pk_in argument set to [1, 4, 7] .
You can use Q objects to do what you want, by bitwise OR-ing them together:
from django.db.models import Q
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A"))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With