[프로젝트] MOCO 모각코를 위한 웹서비스 08 - 좋아요 기능
좋아요 모델
유저는 모각코 모집(post)과 플레이스(place)에 좋아요를 누를 수 있다.
좋아요를 누른 게시글은 마이페이지에서 모아볼 수 있다. 유저 - 좋아요 - 게시글은 다대다 관계이다.
그래서 Django에서 제공하는 ManyToManyField를 사용해서 기능을 구현했다.
다음은 User 모델에 추가한 필드이다.
연결할 모델을 import가 아니라 'posts.Post' 형식으로 사용한 이유가 있다.
바로 Django - Circular Dependency 문제 때문이다. Post 모델에서 이미 import로 User 모델을 불러왔다. 여기서 User 모델이 다시 Post 모델을 import하면 계속해서 순환하는 Circular Dependency 에러가 발생한다. 하지만 위 방식으로 Post 모델을 사용하면 에러를 피할 수 있다.
related_name도 필수로 설정해주어야 한다. Post에는 이미 작성자 정보를 가져오기 위해 User가 연결되어있다. 여기서 좋아요 누른 유저를 저장하기 위해 User를 다시 연결했는데 related_name을 설정하지 않으면 역참조 시 어떤 user를 말하는 것인지 알 수가 없다. 그러므로 related_name을 설정해서 정확히 표기해주어야한다.
좋아요 기능
좋아요 기능은 ajax를 이용한 비동기 방식으로 구현했다.
좋아요를 처음 누르면 like_user로 연결시키고, 좋아요를 다시 누르면 연결을 해제한다.
백엔드팀이다 보니 자바스크립트는 정말 할 줄 몰라서 열심히 구글링을 했다. ajax는 옛날 유행이라고 들은 것 같지만 참고할 자료가 많아서 ajax를 활용했다. 지금은 좋아요를 누르면 옆의 숫자가 바뀌는 형식인데, 추후에 프론트팀에서 하트의 색깔을 바꾸는 형식으로 수정할 예정이다.
앞으로의 계획
이제 플레이스 기능을 다듬을 예정이다.
플레이스에는 사진을 여러장 올릴 수 있는데 그 중 첫번째 사진을 썸네일로 보여주도록 구현할 것이다.
그 외 기본적인 CRUD가 잘 동작하는지 확인하고 정렬 기능도 추가할 것이다. 프로젝트도 마무리 단계로 향하고 있다..!