Django
django-filter
Zoeken…
Gebruik een django-filter met CBV
django-filter
is een generiek systeem voor het filteren van Django QuerySets op basis van gebruikersselecties. De documentatie gebruikt het in een functie-gebaseerde weergave als een productmodel:
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)
Het filter is als volgt:
import django_filters
class ProductFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact')
class Meta:
model = Product
fields = ['price', 'release_date']
Om dit in een CBV te gebruiken, overschrijft u get_queryset()
van de ListView en retourneert u de gefilterde querset
:
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
Het is mogelijk om toegang te krijgen tot de gefilterde objecten in uw weergaven, zoals met paginering, in f.qs
Dit zal de lijst met gefilterde objecten pagineren.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow