from django.db import connection
from django.test.utils import CaptureQueriesContext
from myapp.models import Student
with CaptureQueriesContext(connection) as queries:
qs = Student.objects.filter(age__gte=18)
print(f"Queries after filter: {len(queries)}")
qs = qs.filter(city='Mumbai')
print(f"Queries after second filter: {len(queries)}")
students = list(qs)
print(f"Queries after list(): {len(queries)}")Understanding QuerySet Lazy Evaluation and Database Queries
The output will show 0 queries after both filters, and 1 query after list().
The output will show 1 query after the first filter, 2 queries after the second filter, and 3 queries after list().
The output will show 1 query after each filter() call, and 3 queries total after list().
The output will show an error because CaptureQueriesContext cannot be used with QuerySet filters.
Show answer & explanationAnswer
Correct answer
The output will show 0 queries after both filters, and 1 query after list().
Explanation
QuerySets are lazy-evaluated; filters don't execute queries until the queryset is evaluated (converted to list, iterated, or sliced).
Written by ExamHoot EditorialPublished · Updated
All 40 Django ORM Queries and QuerySets questions
- 1.What is a QuerySet in Django ORM?
- 2.Which method is used to retrieve all objects from a model?
- 3.What does the `filter()` method return in Django ORM?
- 4.What is the difference between `filter()` and `get()` methods?
- 5.What does the `exclude()` method do in Django ORM?
- 6.How do you order QuerySet results in Django?
- 7.What does `count()` method return?
- 8.What is QuerySet slicing used for?
- 9.What does `exists()` method do?
- 10.What does the `distinct()` method do?
- 11.Understanding Django QuerySet Evaluation
- 12.Filtering Related Objects with select_related()
- 13.Scenario:
- 14.Understanding F() Objects in Django ORM
- 15.Aggregation with Django ORM
- 16.Scenario:
- 17.Understanding Prefetch_related() for Reverse Relations
- 18.Query Chaining and Method Order
- 19.Using values() vs values_list()
- 20.Scenario:
- 21.Understanding QuerySet Lazy Evaluation and Database Queries
- 22.Scenario:
- 23.Analyzing N+1 Query Problem in Django ORM
- 24.QuerySet Method Chaining and Filter Behavior
- 25.Scenario:
- 26.Understanding QuerySet Slicing and Caching Behavior
- 27.Aggregation and Annotation in Django ORM
- 28.Scenario:
- 29.Understanding F Objects and Database-Level Operations
- 30.Scenario:
- 31.Complex Query with Multiple Aggregations and Filtering
- 32.Scenario:
- 33.Understanding Subqueries and Exists()
- 34.Raw SQL Queries and Security
- 35.Case-Insensitive Lookups and Performance
- 36.Scenario:
- 37.Understanding Query Caching and Database Hits
- 38.Bulk Operations:
- 39.Scenario:
- 40.Understanding Query Optimization with explain()
