posting 앱에서 좋아요 및 팔로우 기능도 진행한다! 다른 앱을 만들어도 무방하다.
like_username
은 User 앱을 FK로 연결한다.posting_photo
는 Posting 앱을 FK로 연결한다.liked_at
은 created_at
처럼 DTF auto_now_add=True
로 생성시간을 담는다.다른 GET 기능들 처럼 list를 선언하고 해당 값들을 append한다. 이전 포스팅에 상세하게 다뤘다!
좋아요 기능도 .get() 함수를 활용해서 사용자, 또는 게시물이 없을 경우 None 값을 받을 수 있도록 설정했다. 좋아요 누를 때 사용자(user_id)가 갑자기 비활성화 했을 수도 있고, 게시물을 갑자기 삭제(posting_id)할 수 있기 때문에 해당 조건문을 작성했다.(하지만 이 조건이 필요한지 잘 모르겠다..)
설정한 조건문들을 다 통과하면 성공적으로 Like.objects.create()
으로 게시물을 좋아요 누를 수 있다!
둘 다 하나의 테이블을 참조하는 흔하지 않은 케이스다.
그리고 follow는 User 앱 안에서 구현했다. (x Posting 앱)
프론트에서 follower
, following
id를 넘겨주면 우리는 이 둘을 User.objects.get()
을 통해 데이터베이스에서 가져와야 한다. 만약 follower
, following
id가 데이터베이스에 없을 경우 우리는 INVALID
하다고 error를 띄운다.
filter().exists()를 통해 팔로우와 언팔로우 기능을 구현하는 포스팅을 따로 만들었다.
만약 follower
, following
id가 follows table
안에 존재한다면 나는 delete()
을, 만약 해당 id가 존재하지 않는다면 create()
을 통해 언팔로우와 팔로우를 구현했다~
같은 테이블을 참조해서 더 복잡하게 생각한 것 같다. m2m, fk 앞에서 기죽지말고 기본 베이스에 충실하자!
잘 참고하고 갑니다!