OR operator in Django model queries

Adam picture Adam · Mar 26, 2011 · Viewed 31.8k times · Source

I'm trying to use an OR operator in the Django filter() function. Right now I have

contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'])

but I also want to search by first name as well. For example:

contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'] OR first_name__icontains=request.POST['query'])

Does anyone know how to do this?

Answer

Yuji 'Tomita' Tomita picture Yuji 'Tomita' Tomita · Mar 26, 2011

Q objects

from django.db.models import Q

Contact.objects.filter(Q(last_name__icontains=request.POST['query']) | 
                               Q(first_name__icontains=request.POST['query']))