📌
Django Rest Framework (DRF)で部分一致フィルタを実装する
Django Rest Framework (DRF)で部分一致フィルタを実装するためには、Djangoフィルターバックエンドを使うのが一般的です。これは、django_filters モジュールを使用します。
このモジュールをまだインストールしていない場合は、以下のコマンドでインストールできます:
pip install django-filter
以下は、部分一致検索を実現するための一般的な手順です:
フィルタセットを定義します。以下はmodels.pyに存在するMyModelというモデルでnameフィールドを部分一致検索するためのフィルタセットです:
import django_filters
class MyModelFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = MyModel
fields = ['name',]
ここで、lookup_expr='icontains'は、大文字小文字を区別せずに部分一致を行うための設定です。
次に、作成したフィルタセットをViewSetに適用します:
from rest_framework import viewsets
from django_filters.rest_framework import DjangoFilterBackend
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
filter_backends = [DjangoFilterBackend]
filterset_class = MyModelFilter
これで、クライアントからのリクエストにnameパラメータが含まれている場合、その値に部分一致するMyModelのインスタンスがレスポンスとして返されます。
ただし、これらのコードは例示のためのものであり、実際の使用ではモデルやフィールド名を適切に置き換える必要があります。また、セキュリティやパフォーマンスの観点から、適切なフィルタリングとバリデーションを行うことが重要です。
Discussion