Reputation: 1815
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 OR
? I can't seem to find it in the documentation (oddly enough, searching for 'or' isn't really useful).
Upvotes: 42
Views: 19178
Reputation: 1
Without Q(), you can also run OR
operater as shown below:
Publisher.objects.filter(name__contains="press") | \
Publisher.objects.filter(country__contains="U.S.A")
Upvotes: 1
Reputation: 13117
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"))
Upvotes: 83