pip install django_filters
INSTALLED_APPS = [
...
#3-rd party
'django_filters',
...
]
#todos/views.py
from django_filters.rest_framework import DjangoFilterBackend
class TodosAPIView(ListCreateAPIView) :
serializer_class =TodoSerializer
permission_classes=(IsAuthenticated,)
filter_backends=[DjangoFilterBackend,filters.SearchFilter,
filters.OrderingFilter]
filterset_fields = ['id','title','desc','is_complete']
search_fields = ['id','title','desc','is_complete']
ordering_fields = ['id','title','desc','is_complete']
def perform_create(self, serializer):
return serializer.save(owner=self.request.user)
# queryset=Todo.objects.all()
def get_queryset(self):
return Todo.objects.filter(owner=self.request.user)
filterset_fields에 정의된 필드들을 쿼리문 형태로 url에 입력하여 정확히 일치하는 값을 찾을 수 있다.
제목이 title인 것으로 검색
제목이 title3인 것으로 검색
Id가 1인 것으로 검색
완료한 항목 검색
search_fields에 정의된 필드들을 쿼리문 형태로 url에 입력하여 원하는 정보가 포함된 데이터를 얻을 수 있다.
title로 검색
title이 들어간 모든 객체들이 검색된다.