How do I create an "AND" filter to retrieve objects in Django? e.g I would like to retrieve a row which has a combination of two words in a single field.
For example the following SQL query does exactly that when I run it on mysql database:
select * from myapp_question where ((question like '%software%') and (question like '%java%'))
How do you accomplish this in Django using filters?
(update: this answer will not work anymore and give the syntax error
keyword argument repeated)
update: Long time since I wrote this answer and done some django, but I am sure to this days the best approach is to use the Q object method like David Berger shows here: How do I use AND in a Django filter?
For thoroughness sake, let's just mention the
Q object method:
from django.db.models import Q criterion1 = Q(question__contains="software") criterion2 = Q(question__contains="java") q = Question.objects.filter(criterion1 & criterion2)
Note the other answers here are simpler and better adapted for your use case, but if anyone with a similar but slightly more complex problem (such as needing "not" or "or") sees this, it's good to have the reference right here.