TIL # 79 : [Django] List Comprehension 속 List Comprehension

셀레스틴 허·2021년 2월 25일
2
post-thumbnail

User id 값 하나로 테이블 7개 들어가기

와디즈의 마이와디즈(마이페이지)로 들어가면 사용자가 펀딩한 제품(들)의 목록을 볼 수 있다. 펀딩한 개개인의 상품 정보값은:

  • 상품 이미지
  • 상품 달성 금액
  • 상품 달성 금액 퍼센트
  • 상품 이름
  • 판매자 이름
  • 상품 카테고리... 가 있다.

마이페이지는 user의 id값 하나만 받는다

우리는 token을 통해서 사용자가 사용자임을 재점검하고 request.user.id로 들어가서 사용자의 id값 및 타정보를 가져올 수 있다.

데이터 모델링하면서 products 테이블 안에 user_id를 안물려 돌고 돌아 제품값들을 찾아와야 한다.

오렌지색 선을 따라.. 보면 우리는 user에서 categories까지 우리가 원하는 값들을 하나씩 추출할 수 있다:

users ➜ orders ➜ rewards_orders(m2m table) ➜ rewards ➜ products ➜ categories_products(m2m table) ➜ categories

내가 받는 정보값 :

  • user의 id

내가 필요한 정보값 :

  • product의 image
  • product의 date_countdown값(오늘 - closing_date)
  • product의 total_amount
  • product의 achieved_rate
  • product의 title
  • product의 maker_info
  • product의 category의 name

이렇게 순차적으로 테이블을 들어가서 사용자가 펀딩한 제품의 목록을 뽑아야 한다.

List Comprehension

프론트와 response로 보내줄 Json 키값을 맞추고 user_info, 그리고 funding_list를 같이 data라는 딕셔너리에 보낸다.

request.user로 user 객체를 찾아서 뽑는다.
1. list comprehension(#1)을 위해 data라는 리스트를 선언한다.
1. user table을 역참조하는 order table로 들어간다.
2. order table와 m2m(역참조)관계인 reward table로 들어간다.
3. reward table에서 정참조 관계인 product, maker_info table을 들어간다.
4. product table과 m2m(역참조)관계인 categories으로 들어간다.
5. categories에서 list comprehension(#2)을 한번 더 선언해 category의 name을 뽑는다.

List Comprehension 속 List Comprehension을 알려주신... 경훈님 감사합니다...

profile
Software Developer / 고통은 필연, 괴로움은 선택

2개의 댓글

comment-user-thumbnail
2021년 2월 25일

어머어머 민지님 이렇게 바쁜데 언제 이렇게 블로그까지 썼대요 성실한 사람....💕 잘 보고 가용

1개의 답글