Django 016 | WeStagram #8 Follow

This Is Empty.·2021년 9월 27일
0

Django

목록 보기
17/20

WeStagram Follow

  • 유저는 유저를 팔로우 할 수 있다.

1. Follow 모델 생성

유저는 유저를 팔로우 할 수 있다.
이때 유저는 모두 회원가입 되어있는 유저여야 한다.
팔로우 하는 유저를 팔로워, 팔로우 당하는 유저를 팔로잉 이라고 한다.
둘 다 User 객체를 참조한다.

하지만 장고에서는 한 클래스 내에서 같은 객체를 참조하면 다음과 같이 에러가 발생한다.

이 오류를 해결하기 위해 사용하는것이 related_name이다.

related_name
관련 개체에서 이 개체의 관계에 사용할 이름

related_name을 지정해주지 않는다면 following 도 posts.Follow.following, follower도 posts.Follow.folower 처럼 참조하게 된다.

겉으로 보기엔 어? 될 것 같은데? 싶지만 장고에서는 그 두가지를 비교할 수 없다.

따라서 related_name을 추가해 모델을 다음과 같이 작성한다.

이제 우리는 user.follower.follower_id, user.following.following_id 처럼 사용할 수 있다.

2. View 작성하기

팔로우 버튼을 한번 누르면 팔로우 되고, 두번 누른다면 팔로우가 취소된다.
그 말은 한 데이터를 보내서 데이터베이스에 저장(팔로우)되었다면 같은 데이터를 보낸다면 데이터베이스에서 지워주어야(언팔로우) 한다.

먼저 데이터 베이스에 followr_idfollowing_id가 있는지 검사하고, 없다면 객체를 생성하고 있다면 객체를 지워준다

3. View path 추가하기

생성한 뷰를 사용하기 위해 다음과 같이 추가했다.

4. 테스트


만약 같은 데이터를 다시 POST한다면

데이터베이스 안에서도 지워진다!

profile
Convinced myself, I seek not to convince.

0개의 댓글