Performance: Search and ordering
This affects how fast the page loads and responds when users search or sort data on a Django-powered site.
Jump into concepts and practice - no test required
items = Item.objects.filter(name__icontains=search_term).order_by('date')
items = Item.objects.all() filtered = [item for item in items if search_term in item.name] sorted_items = sorted(filtered, key=lambda x: x.date)
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Filtering and sorting in Python after fetching all data | N/A (server-side) | N/A | N/A | [X] Bad |
| Filtering and sorting in database query with indexes | N/A (server-side) | N/A | N/A | [OK] Good |
get_queryset method in a Django ListView to add ordering by a field named name??search=apple&order=price?
class ProductListView(ListView):
model = Product
def get_queryset(self):
qs = super().get_queryset()
search = self.request.GET.get('search')
order = self.request.GET.get('order')
if search:
qs = qs.filter(name__icontains=search)
if order:
qs = qs.order_by(order)
return qsclass ItemListView(ListView):
model = Item
def get_queryset(self):
qs = super().get_queryset()
search = self.request.GET.get('search')
if search:
qs = qs.filter(name__icontains=search)
order = self.request.GET.get('order')
qs = qs.order_by(order)
return qsget_queryset?