django-filter helps you easily filter data in your Django apps without writing complex code. It makes searching and sorting data simple and user-friendly.
0
0
Filtering with django-filter
Introduction
You want users to search or filter a list of items on a webpage.
You need to filter database records based on user input in forms.
You want to add filters to API endpoints to return specific data.
You want to avoid writing manual filtering logic in views.
You want a clean and reusable way to handle filtering in Django.
Syntax
Django
import django_filters from .models import YourModel class YourModelFilter(django_filters.FilterSet): class Meta: model = YourModel fields = ['field1', 'field2', 'field3']
Define a FilterSet class for your model to specify which fields can be filtered.
Use this FilterSet in your views to apply filtering automatically.
Examples
This filter lets users filter products by category and price.
Django
import django_filters from .models import Product class ProductFilter(django_filters.FilterSet): class Meta: model = Product fields = ['category', 'price']
This example adds a case-insensitive search on the book title.
Django
import django_filters from .models import Book class BookFilter(django_filters.FilterSet): title = django_filters.CharFilter(lookup_expr='icontains') class Meta: model = Book fields = ['title', 'author']
Sample Program
This view uses django-filter to filter products based on URL query parameters. The filtered products are passed to the template inside the filter object.
Django
import django_filters from django.shortcuts import render from .models import Product class ProductFilter(django_filters.FilterSet): class Meta: model = Product fields = ['category', 'price'] def product_list(request): f = ProductFilter(request.GET, queryset=Product.objects.all()) return render(request, 'product_list.html', {'filter': f})
OutputSuccess
Important Notes
Remember to install django-filter with pip install django-filter and add it to INSTALLED_APPS.
Use request.GET to get filter parameters from the URL.
django-filter works well with Django REST Framework for API filtering.
Summary
django-filter simplifies filtering data in Django apps.
Create a FilterSet class to define filterable fields.
Use the FilterSet in views to filter querysets based on user input.