to_representation() 오버라이딩 질문입니다.
496
2 asked
안녕하세요. 강의 잘 듣고 있습니다.
강의 내용 중 PostListAPIView의 get_serializer_context() 오버라이딩 말고
FileField()의 to_representaion() 메소드를 오버라이딩 하려고 시도중입니다. PostListSerializer에서 오버라이딩 하는 것으로 보이는데 방법을 잘 모르겠습니다.
아래와 같이 오버라이딩 하면, ModelSerializer의 to_representation()을 오버라이딩하게 되버립니다.
class PostListSerializer(serializers.ModelSerializer):
category = serializers.ReadOnlyField(source='category.name')
class Meta:
model = Post
fields = ['id', 'title', 'image', 'like', 'category']
def to_representation(self, value):
if not value:
return None
use_url = getattr(self, 'use_url', api_settings.UPLOADED_FILES_USE_URL)
if use_url:
try:
url = value.url
except AttributeError:
return None
request = self.context.get('request', None)
if request is not None:
return url
return url
return value.name
Answer 3
0
제 PC 에서는 잘되고 있습니다.
이전 코드는 삭제했는지요 ?
views.py 에서 PostListAPIView 의 get_serializer_context() 메소드는 삭제 요망.
그래도 안되면, PostListAPIView 와 PostListSerializer 코드와 에러 메세지를 올려 줄래요.
0
안녕하세요. 강사님.
답변 감사합니다.
강사님께서 제공해주신 코드로 진행해보니, id, title, image ... 도 to_representation() 메소드에 영향을 받아 제대로 출력되지 않고,
The 'image' attribute has no file associated with it. 라는 에러를 출력합니다.
0
안녕하세요. 독자님.
독자님의 얘기처럼, PostListSerializer 의 to_representation() 을 오버라이딩하는게 맞습니다.
아래 코드처럼, 오버라이딩할 내부 로직이 복잡할 때는, super() 로 가져와서, 원하는 필드만 바꿔주면 됩니다. 그리고 instance.image.url 이 장고에서 디폴트로 만들어주는 url 입니다.
class PostListSerializer(serializers.ModelSerializer):
category = serializers.CharField(source='category.name')
class Meta:
model = Post
fields = ['id', 'title', 'image', 'like', 'category']
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['image'] = instance.image.url
return ret
블로그 첫 화면이 안 나옵니다.
0
317
3
INSTALLED_APPS 순서
0
246
1
vscode 실행안됨
0
667
3
django venv activate 하고 나서 vue 서버도 실행 해야 하나요?
0
367
2
더 공부할게있을까요
0
369
1
용어에 대해 문의 드립니다.
0
283
2
like 기능을 위한 overriding 문의
0
322
1
코드 최적화 과정
0
364
1
유저 1명이 1개의 게시글에 좋아요를 누를 경우
0
356
1
프로잭트를 생성하고 runserver하면 ModuleNotFoundError: No module named 발생해요
0
894
4
GET Method 에서 왜 Like 수를 증가시키는지 궁금합니다.
0
376
1
CSRF Token에 대한 질문입니다.
0
609
1
ModuleNotFoundError: No module named 'rest_framework django' 오류
0
3037
1
앱을 구성할 때 api 앱과 blog 앱을 나누어서 구성하는 이유가 궁금합니다ㅜ
1
472
2
공부 순서에 관해 질문드립니다.
0
360
1
CateTagAPIView에서 get 메소드
1
309
2
깃헙 페이지를 보고싶어요
0
230
1
디버거 관련 질문입니다.
0
277
3
가장 마지막강의 (Generic View -> ViewSet migration) 질문입니다.
0
223
1
PostCommentListAPIView(게시물 댓글 조회 api) 관련 질문
0
211
1
댓글 보기 및 삭제 api
0
280
1
post, comment crud 질문
0
228
4
CateTagSerializer 질문입니다!
3
336
3
The serializer field might be named incorrectly and not match any attribute or key on the `User` instance.
0
840
1

