리뷰는 상품을 사야만 쓸 수 있어서 이번 코드는 내 머리속으로 구현을 해 보았다!
일단,
별점
이 있고, 제목
이 있고, 내용
이 있다.
아이디
를 받고 create_at
이 있는것 같다.
상품을 구매하고 별점을 쓰게 하려면, 일단 다음의 순서가 필요할 것 같다.
review
와 order
를 이어주는 matching_review
테이블을 만들어서 동시에 create
해준다.)matching_review
에 연결된 review
가 있다면 리뷰를 못쓰게 한다.이것을 바탕으로 POST
를 중심으로 코드를 짜보도록 한다.
request.user
를 통해 user_id
값을 받고 그것을 list comprehension
을 통해 Json
으로 보내준다.
일단 matching_review
테이블에 product_id
와 order_id
를 가지고 있는 데이터가 있는지 확인한 후 없다면 review
를 쓰게 한다.
두가지 상황을 막기 위해서다.
review
에 글을 썼는데, matching_review
에 안쓰였다면, review
를 또 쓸 수 있게 한다.review
를 안썬느데 matching_review
에 데이터가 있다면 review
를 쓰지도 못한다.그레서 두 테이블에 모두 데이터가 정상적으로 등록이 될때만 데이터가 등록되도록 설정을 한다.
리뷰를 보여주는 목록은 상품 디테일 페이지에서도 보여줄 수 있지만,
My Page
에서도 연결시켜 줄 수 있기에 코드의 재사용을 줄이려 함수로 선언하고 사용했다.
오호 transaction 어떻게 사용했는지 궁금했는데 잘 배우고 갑니다~ 홧팅~