Python/Django

Django Rest Framework Filter

DevelopC 2022. 10. 5. 09:00
728x90

Django Rest Framework Filter

  • HTTP GET Request시 쿼리 스트링을 사용하여 검색하는 일반적인 웹 처리방식을 사용할 수 있습니다.
  • Django Rest Framework에서 제공하는 클래스 형태의 필터 구조를 사용합니다.

사용방법

  • Django RestFramework의 FilterSet 클래스를 상속받아 filter 클래스를 생성합니다.
  • 컬럼을 선언한 내용에 따라 컬럼 1개가 쿼리 스트링 1개로 1:1 매칭 됩니다.
  • 만약 여러 컬럼에 걸친 조건으로 처리하고 싶은 경우 method를 사용할 수 있습니다.
  • 클래스 내 선언하지 않은 쿼리 스트링은 사용할 수 없습니다.
import django_filters
from rest_framework import filters


# FilterSet 상속
class MemberFilter(filters.FilterSet):
    """
    회원 정보 Filter
    """
    # 필터로 사용 할 컬럼별로 선언, 검색조건키워드=데이터타입(옵션)
    # 쿼리 스트링의 키 부분이 member_name가 되고, field_name은 실제 모델클래스의 컬럼 명 
    # member_name은 문자형 필터이고 contains라는 키워드를 통해 해당 값을 포함하는 문자 검색 ex) member_name like '%tom%'
    member_name = django_filters.CharFilter(field_name='member_name', lookup_expr='contains')

    class Meta:
        # 연관 모델 맵핑 
        model = Member
        # 사용 할 컬럼들
        fields = ('member_name') 


# ViewSet
class MemberViewSet(ModelViewSet):
    filter_backends = [filters.DjangoFilterBackend]
    filterset_class = MemberFilter
728x90

'Python > Django' 카테고리의 다른 글

Django Rest Framework ViewSet  (0) 2022.09.28
Django ORM  (2) 2022.09.23
Django Rest Framework Excel Renderer 클래스  (0) 2017.08.02
Django ORM기반 ERD 생성  (0) 2017.07.06