Adam
Adam

Reputation: 3093

OR operator in Django model queries

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?

Upvotes: 50

Views: 44405

Answers (2)

Eric
Eric

Reputation: 147

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

Upvotes: 13

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']))

Upvotes: 125

Related Questions