본인은 DRF 라이브러리에서 viewsets과 mixin 기능을 사용해서 API 개발을 자주한다.
클래스형 view를 개발하다보면,
이라는 함수를 클래스 내에 내장하는 경우가 있는데def get_queryset(self):
위의 코드 처럼 queryset을 기본적으로 사용할 것이다.class API(mixin.어쩌고, viewsets.어쩌고): queryset = 어쩌고 . . .
그러면 get_queryset 함수는 왜 사용해야할까?
queryset VS get_queryset()
분명 queryset과 get_queryset()은 같은 동작을 한다.
하지만, 필터의 값이 동적일 경우 잘못된 쿼리가 나올 수 있다.
queryset : request 시 한 번만 실행됨.# 필터의 값이 동적일 경우 잘못된 쿼리가 나올 수 있음 # (X) class ListView(ListAPIView): queryset = order.objects.filter(created_date=date.today()) # 앱이 시작될 때 date.today() 실행 됨 # (O) class ListView(ListAPIView): def get_queryset(self): return order.objects.filter(created_date=date.today()) # request 마다 date.today() 실행 됨
get_queryset() : request 마다 실행됨.
'Django > DRF' 카테고리의 다른 글
[Django] DecimalField (0) | 2022.05.25 |
---|---|
[Django rest Framework] get_object() (0) | 2022.04.23 |
[Django rest Framework] Swagger 문서 자동화 ( drf-yasg ) (0) | 2022.04.22 |
[Django rest framework] TDD - Unit Test (0) | 2022.04.20 |
[Django] ContentType (0) | 2022.03.29 |