0
0
Djangoframework~5 mins

Filtering with django-filter

Choose your learning style9 modes available
Introduction

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.

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.