TIL39 - related_name

Kiyong Lee·2021년 10월 1일
0

Django

목록 보기
20/35

related_name

앞으로 세션때 있을 내용이긴 한데, 이미 에러가 발생한 상황이라

이걸 써야하는 이유만 설정하고 나머지는 배운다음 포스팅 예정ㅎ


왜 필요한가?

인스타그램 팔로우 기능을 구현할건데, 여기서 가장 중요한 건 유저이다.

팔로우 한 사람, 팔로우 당한 사람 모두 User의 정보를 가져오므로

둘 다 foreignkey가 user가 되는데, users 앱에서 following앱을

참조할 일이 있을 때 저렇게 참조한다고만 써놓으면 누굴 참조해야하지?

그래서 makemigrations를 할 때, 맨 마지막줄에 알려준다

Add or Change a related_name to ...


해결

만약 하나의 컬럼만 user를 참조한다고 하면, user = following.user_set.all()
이런식으로 참조가 가능하다.

하지만 하나의 앱을 여러명이 참조할 경우, 그걸 구분해주기 위해서 사용하는 게 related_name 이다.


Naming Rule

그래서 설정을 해주는데, 변수명을 어케 설정하지?

국룰은 해당 클래스명을 써준다고 한다.

from django.db    import models

from users.models import TimeStampedModel

class Following(TimeStampedModel) :

    following = models.ForeignKey('users.User', on_delete=models.CASCADE)
    follower  = models.ForeignKey('users.User', on_delete=models.CASCADE)

    class Meta :
        
        db_table = 'followings'

현재 클래스명은 Following이니 following_? 이렇게 나눠주면 된다

profile
ISTJ인 K-개발자

0개의 댓글