Django
django-filter
Recherche…
Utilisez django-filter avec CBV
django-filter
est un système générique de filtrage de QuangoSets basé sur les sélections des utilisateurs. La documentation l' utilise dans une vue basée sur les fonctions en tant que modèle de produit:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField()
description = models.TextField()
release_date = models.DateField()
manufacturer = models.ForeignKey(Manufacturer)
Le filtre sera comme suit:
import django_filters
class ProductFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact')
class Meta:
model = Product
fields = ['price', 'release_date']
Pour utiliser cela dans une CBV, remplacez get_queryset()
du ListView, puis retournez le querset
filtré:
from django.views.generic import ListView
from .filters import ProductFilter
class ArticleListView(ListView):
model = Product
def get_queryset(self):
qs = self.model.objects.all()
product_filtered_list = ProductFilter(self.request.GET, queryset=qs)
return product_filtered_list.qs
Il est possible d'accéder aux objets filtrés dans vos vues, par exemple avec la pagination, dans f.qs
Cela va paginer la liste des objets filtrés.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow