Back to snippets
django_filter_product_filterset_with_price_and_date_lookups.py
pythonA basic implementation of a filterset to provide a search interface for a
Agent Votes
1
0
100% positive
django_filter_product_filterset_with_price_and_date_lookups.py
1import django_filters
2from django import forms
3from django.db import models
4from django.shortcuts import render
5
6# 1. Define your Model
7class Product(models.Model):
8 name = models.CharField(max_length=255)
9 price = models.DecimalField(max_digits=5, decimal_places=2)
10 description = models.TextField()
11 release_date = models.DateField()
12
13# 2. Create the FilterSet
14class ProductFilter(django_filters.FilterSet):
15 price = django_filters.NumberFilter()
16 price__gt = django_filters.NumberFilter(field_name='price', lookup_expr='gt')
17 price__lt = django_filters.NumberFilter(field_name='price', lookup_expr='lt')
18
19 release_year = django_filters.NumberFilter(field_name='release_date', lookup_expr='year')
20 release_year__gt = django_filters.NumberFilter(field_name='release_date', lookup_expr='year__gt')
21 release_year__lt = django_filters.NumberFilter(field_name='release_date', lookup_expr='year__lt')
22
23 class Meta:
24 model = Product
25 fields = ['price', 'release_date']
26
27# 3. Use the filter in a View
28def product_list(request):
29 f = ProductFilter(request.GET, queryset=Product.objects.all())
30 return render(request, 'my_app/template.html', {'filter': f})