get_queryset in drf
drf의 modelviset에는 get_queryset이라는 메서드가 있다. api에 필요한 쿼리셋을 반환해주는 메서드이다. 해당 메서드가 원래 어떻게 정의되어있는지 보자:
"""
Get the list of items for this view.
This must be an iterable, and may be a queryset.
Defaults to using `self.queryset`.
This method should always be used rather than accessing `self.queryset`
directly, as `self.queryset` gets evaluated only once, and those results
are cached for all subsequent requests.
You may want to override this if you need to provide different
querysets depending on the incoming request.
(Eg. return a list of items that is specific to the user)
"""
assert self.queryset is not None, (
"'%s' should either include a `queryset` attribute, "
"or override the `get_queryset()` method."
% self.__class__.__name__
)
queryset = self.queryset
if isinstance(queryset, QuerySet):
# Ensure queryset is re-evaluated on each request.
queryset = queryset.all()
return queryset
'Get the list of items for this view'가 중요한 파트다. 처음에 이 메서드를 오바리이딩할 때 모델에서 필요한 데이터를 get으로 가져오니 detail: "not found"
가 떴다. 생각해보니 쿼리셋은 하나의 오브젝트가 아니라 오브젝트의 리스트를 일컫는 것이기 때문에 filter로 바꿔서 하니 성공.
Author And Source
이 문제에 관하여(get_queryset in drf), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sylee0427/getqueryset-in-drf저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)