지금까지는 게시글과 댓글처럼 포린키나 MTM를 통해서 시리얼라이저에서 obj와 관련된 정보를 가공하고 통신을 했는데 오늘 생각해봐야 했던 문제는 Review 모델 data와 연결된 받은 스코어의 개수, 유저 사진 , 평가자의 사진 등 을 한페이지에 어떻게 나타낼 것인지였다.
"""
판매자 정보에 들어갔을때 후기모음
"""
#시리얼라이저 여러개를 통해서 정보 다 불러오고 여기서 한번에 프론트로 넘겨줌
# 필요한 것 후기 : 작성자 id 리뷰내용 시간
# id 아니까 보는 id의 받은 점수 개수
# 시리얼라이저데이터 두개 보내주고 시리얼라이저에서 처리??
# 유저아이디 받은거 처리하고 시리얼에 보내줌 여기서 처리 다 하고 보내주는게 맞는듯 근데 json으로 가야함
# 지금 내가 정리한 바로는 시리얼라이저 통과시키고 보내야하는데 memo 처럼 모델에맞게 serializer = StudyLogSerializer(
# study_log, data={"memo": memo}, partial=True) 이렇게 같이 보내주는건 당연하게 되는데 지금 그냥 숫자는 보낼수가 없음
# 지금 api를 따로해서 보내고 시리얼라이저에서 값을 처리한다(아직 방법은 모름) 쿼리가 두번 되는거라 고민 그렇게 레스트풀하지않나? 아니면 쿼리는 같은숫자로 보내지는걸까
# 콘솔에서 본 바로는 하나의 받아온곳에서 카운트 숫자면 몇개있는게 불가능 해보이는데 obj하나씩 관련한건 가능 뭐likes나(매투매) 자신을 바라보고있는 코멘트들의 수 count에 조건 가능????
# 뭐 카운트 올려서 할 수 있으려나
# 프로필에 연결된 url 함수
# 유저 들어온다
지금까지는 seriallizer.data 하나만 response하면서 다른데이터를 보낼 생각을 해보지않아서 혼자 생각하면서 생각을 정리했다. 결과적으로는 한번의 receiver_id를 받아오면서 할 수 있는건 다해서 데이터로 한번에 보내는게 좋다고 생각을했고 그렇게 진행했다.
review_list=Review.objects.filter(receiver_id=user_id) #리뷰안 어써 불러오면 되겠네
review_list_order_by = review_list.order_by('-created_at')
serializer=ReviewListSerializer(review_list_order_by, many=True)
bad_review_count = review_list.filter(score=-20).count()
soso_review_count = review_list.filter(score=0).count()
good_review_count = review_list.filter(score=3).count()
excellent_review_count = review_list.filter(score=5).count()
receiver=User.objects.get(id=user_id) # 받아오고 시리얼라이저
receiver_serializer=UserSerializer(receiver)
data = {
"bad_review_count":bad_review_count,
"soso_review_count":soso_review_count,
"good_review_count":good_review_count,
"excellent_review_count":excellent_review_count,
"serializer":serializer.data,
"receiver":receiver_serializer.data
}
return Response(data, status=status.HTTP_200_OK)
path parameter로 받아온 receiver_id를 통해서 어디까지 들고올 수 있을지 어떻게 사용할것인지 고민했다 이제는 조금 쿼리에 대한 이해도 생기고 스스로 설계하는 방식이 세워진 것같았다. 그리고 다른사람의 코드를보고 클린코드를 어떤식으로 작성했는지 어떤방식과 생각으로 코드를 작성했는지 보고 좋은점은 내것으로 만드는것도 시간이 필요하다고 느끼기도 했다. 내가 생각지도 못한 방법이 많았기 때문이다.
다른사람이 보기좋은코드, 깔끔한 코드를 작성하기위해 노력하자!
'TIL' 카테고리의 다른 글
프로젝트중 ASGI_APPLICATION module 'handsup.asgi' 오류 (0) | 2022.12.11 |
---|---|
12.10 토 | viewset 사용해보기 | 파라미터 사용하기위해 어떻게 해야할까? (0) | 2022.12.10 |
12.7 수 | 비매너 정지 코드 리팩토링 (0) | 2022.12.08 |
12/6 | 프로젝트 백엔드 프론트 (0) | 2022.12.07 |
timeago 모듈 | 시간오류수정 | (0) | 2022.12.04 |