0
0
Djangoframework~20 mins

Filtering with django-filter - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
django-filter Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this django-filter setup?

Given a Django model Book with fields title (string) and year (integer), and this filter class:

import django_filters

class BookFilter(django_filters.FilterSet):
    class Meta:
        model = Book
        fields = {"year": ["gte", "lte"]}

What will BookFilter({'year__gte': 2000}).qs return?

Django
import django_filters

class BookFilter(django_filters.FilterSet):
    class Meta:
        model = Book
        fields = {"year": ["gte", "lte"]}

# Assume Book.objects.all() contains books with years 1995, 2000, 2005
AA queryset of books with year >= 2000
BA queryset of books with year <= 2000
CRaises a TypeError due to incorrect filter syntax
DA queryset of all books ignoring the filter
Attempts:
2 left
💡 Hint

Look at the filter field name and the query parameter key.

📝 Syntax
intermediate
2:00remaining
Which option correctly defines a filter for a CharField with case-insensitive contains?

Choose the correct django-filter field definition to filter a name CharField with case-insensitive substring matching.

Django
import django_filters

class PersonFilter(django_filters.FilterSet):
    name = ???

    class Meta:
        model = Person
        fields = ['name']
Aname = django_filters.CharFilter(lookup_expr='contains')
Bname = django_filters.CharFilter(lookup_expr='icontains')
Cname = django_filters.CharFilter(lookup_expr='iexact')
Dname = django_filters.CharFilter(lookup_expr='startswith')
Attempts:
2 left
💡 Hint

Look for the lookup expression that ignores case and checks substring.

🔧 Debug
advanced
2:00remaining
Why does this filter raise a FieldError?

Given this filter class:

class ProductFilter(django_filters.FilterSet):
    price = django_filters.NumberFilter(lookup_expr='gte')

    class Meta:
        model = Product
        fields = ['price', 'category']

And the query ProductFilter({'price__gte': 100}).qs raises django.core.exceptions.FieldError. Why?

Django
class ProductFilter(django_filters.FilterSet):
    price = django_filters.NumberFilter(lookup_expr='gte')

    class Meta:
        model = Product
        fields = ['price', 'category']

# Product model has fields: price (DecimalField), category (ForeignKey)
ABecause 'category' field is missing a filter definition
BBecause 'price__gte' is not a valid query parameter for NumberFilter with lookup_expr='gte'
CBecause the Product model does not have a 'price' field
DBecause the filter field 'price' already uses 'gte', the query param should be 'price' not 'price__gte'
Attempts:
2 left
💡 Hint

Check how django-filter builds query parameters from filter fields and lookup expressions.

state_output
advanced
2:00remaining
What is the count of items in the filtered queryset?

Given a model Order with a status CharField and this filter:

class OrderFilter(django_filters.FilterSet):
    status = django_filters.CharFilter(lookup_expr='exact')

    class Meta:
        model = Order
        fields = ['status']

# Assume Order.objects.all() has 10 orders: 4 with status 'pending', 6 with status 'shipped'

What is OrderFilter({'status': 'pending'}).qs.count()?

Django
class OrderFilter(django_filters.FilterSet):
    status = django_filters.CharFilter(lookup_expr='exact')

    class Meta:
        model = Order
        fields = ['status']

# Orders: 4 pending, 6 shipped
A4
B6
C10
D0
Attempts:
2 left
💡 Hint

Filter matches exact status 'pending'.

🧠 Conceptual
expert
3:00remaining
Which option best explains how django-filter applies filters internally?

How does django-filter apply filters to a queryset when you call FilterSet(data).qs?

AIt modifies the original queryset in place by removing items that don't match the filter criteria.
BIt converts the filter data into raw SQL and executes it directly on the database.
CIt builds a Django ORM query by chaining <code>filter()</code> calls using the filter fields and their lookup expressions with the provided data.
DIt loads all objects into memory and filters them using Python list comprehensions.
Attempts:
2 left
💡 Hint

Think about how Django ORM queries are built and executed lazily.