Django Filter
django-filter предоставляет декларативный способ фильтрации Django QuerySets.
Установка
Создание фильтров
1import django_filters
2from .models import Book
3
4class BookFilter(django_filters.FilterSet):
5 title = django_filters.CharFilter(lookup_expr='icontains')
6 published_after = django_filters.DateFilter(field_name='published_date', lookup_expr='gte')
7 price_min = django_filters.NumberFilter(field_name='price', lookup_expr='gte')
8 price_max = django_filters.NumberFilter(field_name='price', lookup_expr='lte')
9
10 class Meta:
11 model = Book
12 fields = ['author', 'category']
Использование во views
Интеграция с DRF
Кастомные фильтры
FAQ
Q: Как создать сложные фильтры?
A: Используй method parameter для кастомной логики фильтрации.
Q: Можно ли фильтровать по связанным полям?
A: Да, используй двойное подчеркивание: author__name__icontains.