Contenu du cours
Django ORM Ninja: Advanced Techniques for Developers
Django ORM Ninja: Advanced Techniques for Developers
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'; )
python
iexact
- case-insensitive match.
( SELECT * FROM Author WHERE LOWER(pen_name) = LOWER('george orwell'); )
python
contains
- case-sensitive containment test.
( SELECT * FROM Book WHERE title LIKE '%House%'; )
python
icontains
- case-insensitive containment test.
( SELECT * FROM Book WHERE LOWER(title) LIKE LOWER('%house%'); )
python
in
- in a given iterable; often used for filtering by a list of values.
( SELECT * FROM Author WHERE id IN (1, 4, 7); )
python
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; )
python
startswith
,istartswith
- string starts with a value (case-sensitive and insensitive versions).
( SELECT * FROM Author WHERE first_name LIKE 'J%'; )
python
endswith
,iendswith
- string ends with a value (case-sensitive and insensitive versions).
( SELECT * FROM Author WHERE last_name LIKE '%e'; )
python
range
- within a certain range (inclusive).
( SELECT * FROM Book WHERE id BETWEEN 1 AND 5; )
python
date
,year
,month
,day
- specific date components.
( SELECT * FROM Book WHERE EXTRACT(YEAR FROM pub_date) = 2023; )
python
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?
Merci pour vos commentaires !