Django View에서의 filtering
class PostListAPIView(generics.ListAPIView):
queryset = Post.obejects.all()
def get_queryset(self):
q = self.request.query_params.get('q', '')
qs = super().get_queryset()
if q:
qs = qs.filter(titled__icontains=q)
return qs
from rest_framework.filters import SearchFilter, OrderingFilter
class PostModelViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ['message'] //문자열필드에만 가능.
ordering_fields = ['id'] //지정하지않으면 Serializer의 모든 필드가 가능.
ordering = ['id']
/myurl/?search=검색어&ordering=-pk
/myurl/?search=검색어&ordering=-created_at, pk
등으로 사용가능.