마이페이지 부분 view와 serializer 부분을 작성할 때
가령, 내가 선택한 취미, 신청한 워크샵, 생성한 워크샵 정보를
각각 정리하는 것이 훨씬 더 가독성 있고, 필요한 정보들을
세부적으로 잘 구분하여 사용할 수 있다고 생각했는데 오히려 코드만 번잡해지고
백엔드 부분 뿐만 아니라 자바스크립트 부분에서도 함수를 여러번 호출해야 하는 번거로움이 있어서
한 번에 불러올 수 있도록 하는 것이 훨씬 효율적임을 깨달았다.
아래는 mypageSerializder로 통합한 부분이며 필요한 다른 필드는 다른 serializer를 도입하여
(class Meta 위에 있는 변수들) 작성할 수 있다.
여기서 many=True를 입력하지 않으면 정참조로 불러온 변수만 호출할 수 있고, 해당 serializer의 정보를 모두 불러오기 위해서는 반드시 many=True를 붙여야 한다.
# 마이페이지
class MypageSerializer(serializers.ModelSerializer):
workshop_likes = MypageWorkshopLikeSerializer(many=True)
hobby = HobbySerializer(many=True)
workshop_host = WorkshopListSerializer(many=True)
workshop_apply_guest = WorkshopApplySerializer(many=True)
class Meta:
model = User
fields = ('nickname', 'email', 'profile_image', 'workshop_likes', 'hobby', 'workshop_host', 'workshop_apply_guest')
불러온 정보의 JSON 형태는 다음과 같다.
{
"nickname": "js",
"email": "js@gmail.com",
"profile_image": "/media/user_profile/user_js_92502062eb154ef781a6a90f71f1a596.jpg",
"workshop_likes": [
{
"pk": 1,
"title": "배드민턴 클래스",
"workshop_image": "/media/workshop/workshop_%EB%B0%B0%EB%93%9C%EB%AF%BC%ED%84%B4_%ED%81%B4%EB%9E%98%EC%8A%A4_b56665d30e454accbf075fbce39b51e8.jpg",
"location": "경기",
"address": "의정부시"
},
{
"pk": 2,
"title": "독서모임 클래스",
"workshop_image": "/media/workshop/workshop_%EB%8F%85%EC%84%9C%EB%AA%A8%EC%9E%84_7d2fb5fc87294da09eb0651e018195e7.jpeg",
"location": "서울",
"address": "종로구"
},
{
"pk": 3,
"title": "뷰티 클래스",
"workshop_image": "/media/workshop/workshop_%EB%B7%B0%ED%8B%B0_%ED%81%B4%EB%9E%98%EC%8A%A4_4a41955e95484a7e8768861361b8ada6.jpeg",
"location": "경기",
"address": "용인시"
}
],
"hobby": [
{
"id": 1,
"category": "핸드메이드"
},
{
"id": 2,
"category": "쿠킹"
},
{
"id": 5,
"category": "음악"
},
{
"id": 6,
"category": "요가/필라테스"
},
{
"id": 7,
"category": "레저/스포츠"
},
{
"id": 8,
"category": "뷰티"
},
{
"id": 11,
"category": "자기계발"
}
],
"workshop_host": [
{
"id": 2,
"title": "독서모임 클래스",
"content": "독서모임이에요",
"workshop_image": "/media/workshop/workshop_%EB%8F%85%EC%84%9C%EB%AA%A8%EC%9E%84_7d2fb5fc87294da09eb0651e018195e7.jpeg",
"category": "자기계발",
"location": "서울",
"date": "2022년 12월 04일 Sunday",
"max_guest": 20,
"workshop_apply": [
{
"guest": 4,
"guest_name": "jh",
"workshop": "독서모임 클래스",
"result": "대기",
"created_at": "2022-12-16T17:39:33.234248"
},
{
"guest": 3,
"guest_name": "sm",
"workshop": "독서모임 클래스",
"result": "승인",
"created_at": "2022-12-16T17:39:33.234248"
},
{
"guest": 5,
"guest_name": "hs",
"workshop": "독서모임 클래스",
"result": "승인",
"created_at": "2022-12-16T17:39:33.235233"
}
],
"cur_time": "PM 05:38",
"views": 3
}
],
"workshop_apply_guest": [
{
"guest": 2,
"guest_name": "js",
"workshop": "뷰티 클래스",
"result": "대기",
"created_at": "2022-12-16T18:44:06.745497"
},
{
"guest": 2,
"guest_name": "js",
"workshop": "배드민턴 클래스",
"result": "대기",
"created_at": "2022-12-16T18:44:10.909492"
}
]
}
'스파르타코딩 AI웹개발 3기' 카테고리의 다른 글
| 내일배움캠프_TIL_2022.12.13 (0) | 2022.12.17 |
|---|---|
| 내일배움캠프_WIL_2022.12.11 (1) | 2022.12.17 |
| 내일배움캠프_TIL_2022.12.09 (0) | 2022.12.17 |
| 내일배움캠프_TIL_2022.12.08 (0) | 2022.12.09 |
| 내일배움캠프_TIL_2022.12.07 (0) | 2022.12.07 |