A. Using request.GET['search'] causes a syntax error.
B. The field lookup should use double underscores: name__icontains.
C. The filter method should be get() instead of filter().
D. The render function is missing the request parameter.
Solution
Step 1: Check field lookup syntax in filter()
The code uses name_icontains, but Django requires double underscores between field and lookup: name__icontains.
Step 2: Verify other parts of the code
Using request.GET['search'] is valid but may raise KeyError if missing; render() usage is correct with request parameter.
Final Answer:
The field lookup should use double underscores: name__icontains. -> Option B
Quick Check:
Field lookup syntax requires double underscores [OK]
Hint: Use double underscores for lookups like __icontains [OK]
Common Mistakes:
Using single underscore in field lookups
Confusing filter() with get()
Forgetting to pass request to render()
Assuming request.GET[] never raises errors
5. You want to build a Django view that filters Article objects by a search term in the title and also filters by a minimum number of views provided by the user. Which of the following code snippets correctly applies both filters using values from request.GET?
hard
A. query = request.GET['q']
min_views = request.GET['min_views']
articles = Article.objects.filter(title__icontains=query).filter(views__lte=min_views)
Using get() with default values avoids errors. Converting min_views to int is necessary for numeric comparison.
Step 2: Apply combined filters correctly
Using filter() with multiple conditions joined by commas applies AND logic. title__icontains=query and views__gte=min_views correctly filter by title substring and minimum views.