이걸 고민했던 이유는 query_set values에서 역참조를 사용을 하면서 여태까지 잘 나오던 image url에 domain링크가 나오지 않게 되면서 시작했다...
처음 검색을 했을때는 시리얼라이저에서 use_url=True
을 추가하라는 말이 있어서 확인해보니 이미 들어가 있는 코드였다...
그래서 serializer
에서 to_representation
과 get_image
함수를 가지고 엄청 많이 씨름을 했다.
계속 씨름을 하던 와중에 분명 db에서는 domain링크가 빠진 문자열이 기록되어 있는데 serializer를 거치고 나오면 domain링크가 붙어있는 모습을 보고 분명 django 내부에 변환하는 코드가 있을 거라고 생각하고 함수를 찾아보니 build_absolute_uri()
라는 함수를 찾게 되었고 urljoin()
과 함께 적용해보니 도메인이 잘붙은체로 전달되는 것을 확인했다!! 성공이다!!
간단하게 사용했던 방법을 작성해 놓을려고 한다.
from django.conf import settings
from urllib.parse import urljoin
class photo_imageAPI(ModelViewSet):
def list(self, request, *args, **kwargs):
queryset = self.queryset.values('원하는', 'columns을', '작성')
base_url = request.build_absolute_uri(settings.MEDIA_URL)
for data in queryset:
data['image'] = urljoin(base_url, data['image'])
return Response(queryset)