Bird
Raised Fist0
Djangoframework~5 mins

Field lookups (exact, contains, gt, lt) in Django - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the exact field lookup do in Django queries?
The exact lookup finds records where the field value matches the given value exactly, including case and whitespace.
Click to reveal answer
beginner
How does the contains lookup work in Django ORM?
The contains lookup finds records where the field contains the given substring anywhere inside it. It is case-sensitive.
Click to reveal answer
beginner
What is the difference between gt and lt lookups in Django?
gt means 'greater than' and finds records with field values larger than the given value. lt means 'less than' and finds records with field values smaller than the given value.
Click to reveal answer
beginner
Write a Django query to find all books with a title containing 'magic'.
Book.objects.filter(title__contains='magic') # Finds books where 'magic' is anywhere in the title, case-sensitive.
Click to reveal answer
beginner
What would Model.objects.filter(age__gt=30) return?
It returns all records where the 'age' field is greater than 30.
Click to reveal answer
Which lookup would you use to find records where a field exactly matches 'John'?
Alt
Bcontains
Cgt
Dexact
What does the contains lookup do?
AChecks if the field contains a substring
BMatches the whole field exactly
CChecks if the field is greater than a value
DChecks if the field is less than a value
Which lookup finds records with a field value less than a given number?
Aexact
Bcontains
Clt
Dgt
How would you find records where a field is greater than 100?
Afield__lt=100
Bfield__gt=100
Cfield__exact=100
Dfield__contains=100
Is the contains lookup case-sensitive by default?
AYes
BNo
COnly on some databases
DDepends on the field type
Explain how to use the exact, contains, gt, and lt field lookups in Django queries.
Think about how you filter data like searching for exact words, parts of words, or numbers bigger or smaller.
You got /5 concepts.
    Give an example of a Django query using contains and explain what it does.
    Imagine searching for a word inside a sentence.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which Django field lookup would you use to find records where a field exactly matches a given value?
      easy
      A. exact
      B. contains
      C. gt
      D. lt

      Solution

      1. Step 1: Understand the purpose of each lookup

        The exact lookup matches fields that are exactly equal to the given value. contains checks for substring presence, gt means greater than, and lt means less than.
      2. Step 2: Match the requirement to the lookup

        Since the question asks for exact matches, exact is the correct lookup.
      3. Final Answer:

        exact -> Option A
      4. Quick Check:

        Exact match = exact [OK]
      Hint: Exact match uses 'exact' lookup in Django queries [OK]
      Common Mistakes:
      • Confusing 'contains' with exact match
      • Using 'gt' or 'lt' for equality checks
      • Assuming 'exact' is default without specifying
      2. Which of the following is the correct syntax to filter a Django model Book for titles containing the word 'django'?
      easy
      A. Book.objects.filter(title__exact='django')
      B. Book.objects.filter(title__gt='django')
      C. Book.objects.filter(title__contains='django')
      D. Book.objects.filter(title__lt='django')

      Solution

      1. Step 1: Identify the lookup for substring matching

        The contains lookup is used to find records where the field contains the given substring anywhere inside it.
      2. Step 2: Check the syntax for filtering

        The correct syntax uses double underscores to specify the lookup: title__contains='django'.
      3. Final Answer:

        Book.objects.filter(title__contains='django') -> Option C
      4. Quick Check:

        Substring search = contains [OK]
      Hint: Use __contains for substring filters in Django queries [OK]
      Common Mistakes:
      • Using __exact for substring search
      • Using __gt or __lt for string matching
      • Missing double underscores in lookup
      3. Given the model Product with a field price, what will this query return?
      Product.objects.filter(price__gt=100)
      medium
      A. All products with price greater than 100
      B. All products with price exactly 100
      C. All products with price less than 100
      D. All products with price containing '100'

      Solution

      1. Step 1: Understand the lookup used

        The lookup price__gt=100 means filter products where the price is greater than 100.
      2. Step 2: Interpret the query result

        The query returns all products with price values strictly greater than 100, excluding 100 itself.
      3. Final Answer:

        All products with price greater than 100 -> Option A
      4. Quick Check:

        gt means greater than [OK]
      Hint: gt means greater than in Django filters [OK]
      Common Mistakes:
      • Confusing gt with exact or contains
      • Thinking gt includes the value 100
      • Assuming it filters less than 100
      4. You wrote this Django query but it raises an error:
      Entry.objects.filter(date__gt='2023-01-01')

      What is the most likely cause?
      medium
      A. You must use 'exact' lookup for date filtering
      B. The field 'date' is not a DateField or DateTimeField
      C. The date string format is incorrect for filtering
      D. The lookup 'gt' is not valid for date fields

      Solution

      1. Step 1: Check field type compatibility

        The gt lookup works with fields that support ordering like DateField or DateTimeField. If date is not one of these, the query will error.
      2. Step 2: Validate other options

        The lookup gt is valid for date fields, and the string format is acceptable for Django's date parsing. Using exact is not required.
      3. Final Answer:

        The field 'date' is not a DateField or DateTimeField -> Option B
      4. Quick Check:

        gt requires comparable field type [OK]
      Hint: Ensure field type supports lookup before filtering [OK]
      Common Mistakes:
      • Assuming all fields support gt lookup
      • Incorrect date string format causing error
      • Using exact lookup unnecessarily
      5. You want to find all Order records where the status field contains 'pending' (case insensitive) and the total is less than 500. Which Django query correctly applies these filters?
      hard
      A. Order.objects.filter(status__contains='pending', total__gt=500)
      B. Order.objects.filter(status__contains='pending', total__lt=500)
      C. Order.objects.filter(status__exact='pending', total__lt=500)
      D. Order.objects.filter(status__icontains='pending', total__lt=500)

      Solution

      1. Step 1: Choose case-insensitive substring lookup

        To find 'pending' regardless of case, use icontains instead of contains.
      2. Step 2: Apply less than filter on total

        The total__lt=500 filters orders with total less than 500.
      3. Step 3: Combine filters correctly

        Both filters are passed as keyword arguments to filter() to apply AND logic.
      4. Final Answer:

        Order.objects.filter(status__icontains='pending', total__lt=500) -> Option D
      5. Quick Check:

        Case-insensitive contains + less than = icontains + lt [OK]
      Hint: Use icontains for case-insensitive substring filters [OK]
      Common Mistakes:
      • Using contains instead of icontains for case insensitivity
      • Mixing lt and gt incorrectly
      • Using exact instead of contains for substring search