작성
·
393
0
related_name의 역할이 정확하게 무엇인가요?
# profileapp의 models.py
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
# articleapp의 models.py
writer = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='article', null=True)
# commentapp의 models.py
article = models.ForeignKey(Article, on_delete=models.SET_NULL, null=True, related_name='comment')
writer = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='comment')
relaated_name이 정확하게 어떻게 쓰이는지 잘 모르겠습니다..!
답변 1
0
안녕하세요.
질문 확인했습니다.
일단 User 객체와 Profile 관계를 예로 들겠습니다.
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
연결고리 역할을 하는 Key는 Profile 모델에 작성되어있습니다.
그렇다면 profile 객체를 확보했을때, 해당 profile 에 연결되어있는 user 객체를 접근하는 것은 너무나도 자명합니다.
profile.user
과 같은 형식으로 접근하면 되죠.
그런데, 반대로 user 객체를 확보한 상태에서 이에 연결된 profile 객체를 접근할때는 어떤식으로 접근해야 할까요?
user.profile
과 같이 접근합니다.
그런데 이때 profile 이라는 이 단어가 related_name 으로 저희가 원하는대로 커스터마이징이 가능한 것입니다.
만약 related_name 을 "prof" 로 설정했다면,
user 객체에서 profile 을 접근할때
user.prof
와 같이 접근해야 하는 것이죠.
결과적으로 user 객체에서 profile 을 접근하기 위한 역참조 문자열을 설정하기 위한 옵션이라고 이해해주시면 될 것 같습니다.
답변이 도움이 되셨으면 좋겠네요!
감사합니다-