TIL#81 인스타그램 클론 추가구현

Dasom·2020년 10월 4일
0

project

목록 보기
9/19

처음 프리코스 때 했던 인스타그램 클론코딩 위스타그램을 추석연휴동안 다시 만들고 기능을 추가 구현하였다🙂
프리코스때는 그저 회원가입이랑 로그인만 구현을 했었는데 이번에는 추가로 게시물 등록, 수정, 삭제 / '좋아요' 기능 / 게시물에 댓글 등록, 삭제 / 'follow' 기능 / 특정 댓글에 달리는 '대댓글' 기능 을 구현 하였다. 다른 기능은 생각보다 금방 하였지만 'follow' 기능에서 막혀서 구글링을 많이 하여 공부를 하였다. follow 기능은 다대다 테이블인데 중간테이블의 foreignkey 2개가 같은 모델을 가리키고 있었기 때문에 related_name을 설정해야 한다는 오류가 발생했고, 중간 테이블을 제외하면 나머지 테이블이 2개가 기본인 다대다인데 user 테이블 한개를 가리키기 때문에 어려웠다.

<당면한 문제>
1. 다대다 관계가 1개의 테이블임
2. 관계가 대칭이 아님
3. 같은 모델에 대해 2개의 ForeignKey

처음에는 follow app 을 따로 만들었지만 다대다 관계에서는 같은 app안에 모델링을 해야 한다는 사실을 처음 알았다. 다대다 테이블은 많이 접해보지 않았기 때문에 foreignkey와 같을 거라고 생각했던 내 잘못이다😭


기존에 있는 User 모델에 follower 라는 ManyToManyField 를 생성하였다. 다대다 관계가 user 테이블 오직 하나이기 때문에 'self' 를 설정하였고, 팔로우하는 사람과 팔로우를 당하는 사람의 관계가 대칭이 아니기 때문에 symmetrical=False 를 설정하였다. 그리고 through='Follow' 로 중간 테이블을 엮어주었다.

중간 테이블을 작성하기 시작하였는데 ForeignKey가 같은 모델을 가리키고 있기 때문에 역참조시 어떤 모델을 참조해야 하는지가 불분명해진다. 그래서 related_name 을 생성하라는 에러가 발생하였다. 나를 팔로우하는 사람과 내가 팔로우 하는 사람을 찾을 수 있게 related_name 을 지정해주었다.

profile
개발자꿈나무🌲

0개의 댓글