Django                
            Джанго-фильтр
        
        
            
    Поиск…
Использование django-фильтра с CBV
 django-filter - это общая система фильтрации Django QuerySets на основе пользовательских настроек. Документация использует его в функциональном представлении как модель продукта: 
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)
Фильтр будет выглядеть следующим образом:
import django_filters
class ProductFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='iexact')
    class Meta:
        model = Product
        fields = ['price', 'release_date']
 Чтобы использовать это в CBV, переопределите get_queryset() ListView, а затем верните фильтрованный 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
 Можно получить доступ к фильтрованным объектам в ваших представлениях, например, с f.qs по f.qs , в f.qs Это приведет к разбивке списка фильтрованных объектов. 
Modified text is an extract of the original Stack Overflow Documentation
        Лицензировано согласно CC BY-SA 3.0
        Не связан с Stack Overflow