• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

related_name의 역할

21.08.04 14:34 작성 조회수 286

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 을 접근하기 위한 역참조 문자열을 설정하기 위한 옵션이라고 이해해주시면 될 것 같습니다.

답변이 도움이 되셨으면 좋겠네요!
감사합니다-