수색…


django-filter를 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에서 사용하려면 ListView의 get_queryset() 을 재정의 한 다음 필터링 된 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 에서 페이지 매김과 같이보기에서 필터링 된 오브젝트에 액세스 할 수 있습니다. 이렇게하면 필터링 된 개체 목록이 매김됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow