I am working on Django and I need to filter records eg:
table: Person
name | age |
---|---|
David Abraham Benj | 18 |
so, if I run this, Person.objects.filter(name__icontains="David Abraham")
it is working
but if I run this, Person.objects.filter(name__icontains="David Benj")
it is not working
any idea how it works?
framework: Django and SQL: Postgres
CodePudding user response:
You need to use Q objects in order to chain multiple SQL ILIKE
operations, which is what the __icontains
operator produces in the backgroud.
Try this:
from django.db.models import Q
Person.objects.filter(
Q(name__icontains="David") &
Q(name__icontains="Benj")
)
CodePudding user response:
Person.objects.filter(name__icontains="David Benj")
Which equal to
SELECT ... WHERE name ILIKE '