You want to filter a queryset of Orders by a date range using django-filter. Which FilterSet setup correctly supports filtering orders between two dates?
hard📝 Application Q9 of 15
Django - DRF Advanced Features
You want to filter a queryset of Orders by a date range using django-filter. Which FilterSet setup correctly supports filtering orders between two dates?
Aclass OrderFilter(FilterSet):
order_date = DateFilter(field_name='order_date', lookup_expr='between')
class Meta: model = Order; fields = ['order_date']
Bclass OrderFilter(FilterSet):
order_date = DateFilter(lookup_expr='range')
class Meta: model = Order; fields = ['order_date']
Cclass OrderFilter(FilterSet):
order_date = DateFilter(field_name='order_date', lookup_expr='in')
class Meta: model = Order; fields = ['order_date']
Dclass OrderFilter(FilterSet):
start_date = DateFilter(field_name='order_date', lookup_expr='gte')
end_date = DateFilter(field_name='order_date', lookup_expr='lte')
class Meta: model = Order; fields = []
Step-by-Step Solution
Solution:
Step 1: Understand date range filtering
django-filter does not have 'between' lookup; use two filters with 'gte' and 'lte' for range.
Step 2: Analyze options
class OrderFilter(FilterSet):
start_date = DateFilter(field_name='order_date', lookup_expr='gte')
end_date = DateFilter(field_name='order_date', lookup_expr='lte')
class Meta: model = Order; fields = [] defines start_date and end_date filters with correct lookups; others use invalid or unsupported lookups.
Final Answer:
class OrderFilter(FilterSet):
start_date = DateFilter(field_name='order_date', lookup_expr='gte')
end_date = DateFilter(field_name='order_date', lookup_expr='lte')
class Meta: model = Order; fields = [] -> Option D
Quick Check:
Date range filtering uses two filters with gte and lte [OK]
Quick Trick:Use two DateFilters with gte and lte for date ranges [OK]
Common Mistakes:
MISTAKES
Using unsupported 'between' lookup
Trying to use 'range' lookup directly
Using 'in' lookup for date ranges
Master "DRF Advanced Features" in Django
9 interactive learning modes - each teaches the same concept differently