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