-
[Django] 참조 & 역참조프로그래밍/Django & Flask 2020. 11. 25. 12:17반응형
좋아요 기능을 만들기 위해 공부하고 있는데 역참조가 나와서 잠깐 정리!!
다음과 같은 Model이 두 개가 있다고 가정해보자.
집 model은 살고있는 사람, 방의 개수와 같은 정보가 필요하다.
그 중 사람 column은 '사람' 모델을 Foreign Key로 지정한 값이다.
사람 model은 이름, 나이와 같은 정보를 가지고 있다.
참조
위와 같은 모델이 존재할 때, 집 모델에서 사람(Foreign Key)를 불러들이는 걸 참조라고 한다
역참조
위와 반대로 사람 모델이 집 모델을 불러들일 때를 역참조라고 한다.
역참조를 사용하는 방법엔
1) _set manager를 사용하는 방법이 있다.
- person.house_set.all (참조되고 있는 모델(사람).참조하는 모델(집)_set.all )
2) related_name 사용
다음과 같은 모델이 존재한다고 할 때(해당 모델은 자기 자신을 참조하고 있는 모델이다)
참조되어지고 있는 모델 (AUTH_USER_MODEL)에서 MyUser를 보고 싶으면 'following'을 통해서 접근하면 된다.
class MyUser(AbstractUser): # user_nickname = models.CharField(max_length=30) # user_photo = models.ImageField(upload_to="images", default='images/santa.png', blank=True) # user_intro = models.TextField(blank=True) # 좋아요 객체 follower = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='following')
* 나를 좋아요 한 사람
MyUser.follower.all()
* 내가 좋아요 한 사람
MyUser.following.all()
반응형'프로그래밍 > Django & Flask' 카테고리의 다른 글
[Django] objects.filter에 다중값 넣기 (0) 2020.11.27 [Django & Ajax] jquery 사용시 처음것만 실행되는 문제 (0) 2020.11.25 [Django] no such table: app_user (0) 2020.11.24 [Django] url 태그 인자 2개 보내기 (0) 2020.11.24 [Django] 각 포스트마다 댓글 출력하기(~ing) (0) 2020.11.23