반응형
queryset과 get_queryset()은 같은 동작을 하지만, 필터의 값이 동적일 경우 잘못된 쿼리가 나올 수 있습니다.
- queryset은 request 발생시 한번만 쿼리셋이 동작합니다.
- get_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()이 유용합니다.
반응형