Django
ジャンゴーフィルター
サーチ…
CBVでdjango-filterを使用する
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
ページングなど、ビュー内のフィルタリングされたオブジェクトにアクセスすることは可能f.qs
。これにより、フィルタリングされたオブジェクトのリストがページ設定されます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow