Field Lookups
A field lookup is essentially a way to specify how Django should filter query results based on a model field's value.
Basic Structure
A field lookup takes the form field__lookuptype=value
. Here, field is the name of the model field, lookuptype is the type of comparison, and value is the value to compare against.
Common Field Lookups
exact
- the default lookup type; it performs case-sensitive comparisons.
(SELECT * FROM Book WHERE genre = 'philosophy';)
Book.objects.filter(genre__exact="philosophy")
iexact
- case-insensitive match.
(SELECT * FROM Author WHERE LOWER(pen_name) = LOWER('george orwell');)
Author.objects.filter(pen_name__iexact="george orwell")
contains
- case-sensitive containment test.
(SELECT * FROM Book WHERE title LIKE '%House%';)
Book.objects.filter(title__contains="House")
icontains
- case-insensitive containment test.
(SELECT * FROM Book WHERE LOWER(title) LIKE LOWER('%house%');)
Book.objects.filter(title__icontains="house")
in
- in a given iterable; often used for filtering by a list of values.
(SELECT * FROM Author WHERE id IN (1, 4, 7);)
Author.objects.filter(pk__in=[1, 4, 7])
gt
,gte
,lt
,lte
- greater than, greater than or equal to, less than, and less than or equal to.
(SELECT * FROM Author WHERE id < 10;)
Author.objects.filter(pk__lt=10)
startswith
,istartswith
- string starts with a value (case-sensitive and insensitive versions).
(SELECT * FROM Author WHERE first_name LIKE 'J%';)
Author.objects.filter(first_name__startswith="J")
endswith
,iendswith
- string ends with a value (case-sensitive and insensitive versions).
(SELECT * FROM Author WHERE last_name LIKE '%e';)
Author.objects.filter(last_name__endswith="e")
range
- within a certain range (inclusive).
(SELECT * FROM Book WHERE id BETWEEN 1 AND 5;)
Book.objects.filter(pk__range=(1, 5))
date
,year
,month
,day
- specific date components.
(SELECT * FROM Book WHERE EXTRACT(YEAR FROM pub_date) = 2023;)
Book.objects.filter(pub_date__year=2023)
1. What is the default field lookup type in Django?
2. How do you filter a queryset to include records where the field value starts with a certain string, case-sensitively?
3. What does the lookup 'pk__lt=10' signify?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.57
Field Lookups
Stryg for at vise menuen
A field lookup is essentially a way to specify how Django should filter query results based on a model field's value.
Basic Structure
A field lookup takes the form field__lookuptype=value
. Here, field is the name of the model field, lookuptype is the type of comparison, and value is the value to compare against.
Common Field Lookups
exact
- the default lookup type; it performs case-sensitive comparisons.
(SELECT * FROM Book WHERE genre = 'philosophy';)
Book.objects.filter(genre__exact="philosophy")
iexact
- case-insensitive match.
(SELECT * FROM Author WHERE LOWER(pen_name) = LOWER('george orwell');)
Author.objects.filter(pen_name__iexact="george orwell")
contains
- case-sensitive containment test.
(SELECT * FROM Book WHERE title LIKE '%House%';)
Book.objects.filter(title__contains="House")
icontains
- case-insensitive containment test.
(SELECT * FROM Book WHERE LOWER(title) LIKE LOWER('%house%');)
Book.objects.filter(title__icontains="house")
in
- in a given iterable; often used for filtering by a list of values.
(SELECT * FROM Author WHERE id IN (1, 4, 7);)
Author.objects.filter(pk__in=[1, 4, 7])
gt
,gte
,lt
,lte
- greater than, greater than or equal to, less than, and less than or equal to.
(SELECT * FROM Author WHERE id < 10;)
Author.objects.filter(pk__lt=10)
startswith
,istartswith
- string starts with a value (case-sensitive and insensitive versions).
(SELECT * FROM Author WHERE first_name LIKE 'J%';)
Author.objects.filter(first_name__startswith="J")
endswith
,iendswith
- string ends with a value (case-sensitive and insensitive versions).
(SELECT * FROM Author WHERE last_name LIKE '%e';)
Author.objects.filter(last_name__endswith="e")
range
- within a certain range (inclusive).
(SELECT * FROM Book WHERE id BETWEEN 1 AND 5;)
Book.objects.filter(pk__range=(1, 5))
date
,year
,month
,day
- specific date components.
(SELECT * FROM Book WHERE EXTRACT(YEAR FROM pub_date) = 2023;)
Book.objects.filter(pub_date__year=2023)
1. What is the default field lookup type in Django?
2. How do you filter a queryset to include records where the field value starts with a certain string, case-sensitively?
3. What does the lookup 'pk__lt=10' signify?
Tak for dine kommentarer!