Django DRF의 Filtering

cloud_park·2023년 9월 30일
0

DRF를 배우자

목록 보기
2/6

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 등으로 사용가능.

Search_fields에서 사용 가능한 것들

DRF 공식문서

문자열 패턴

  • "^" : Starts-with : ~로 시작
  • '=' : Exact matched : 정확히 일치
  • "@" : Full-Text Search : (단어/구문에 대한 검색.
  • "$" : Regex search : 정규표현식
profile
Now in progress of untitled advance

0개의 댓글