Django                
            django-filtro
        
        
            
    Ricerca…
Usa il filtro Django con CBV
 django-filter è un sistema generico per il filtraggio di Django QuerySet in base alle selezioni dell'utente. La documentazione lo utilizza in una vista basata sulle funzioni come modello di prodotto: 
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)
Il filtro sarà il seguente:
import django_filters
class ProductFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='iexact')
    class Meta:
        model = Product
        fields = ['price', 'release_date']
 Per utilizzare questo in un CBV, eseguire l'override di get_queryset() di ListView, quindi restituire il querset filtri filtrato: 
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
 È possibile accedere agli oggetti filtrati nelle viste, ad esempio con paginazione, in f.qs Questo impaginerà l'elenco degli oggetti filtrati. 
Modified text is an extract of the original Stack Overflow Documentation
        Autorizzato sotto CC BY-SA 3.0
        Non affiliato con Stack Overflow