related_name은 장고 ORM모델을 위한 것이며,
ORM모델은 쿼리문 없이 장고에서 데이터베이스와 소통하기 위한 것이다.
간단히 설명하면 "나"를 ForeignKey로 가지는 모델을 굳이 쿼리 조회 없이 쉽게 가져올 수 있게 하기 위한 장치이다.
related_name이란 이름을 가진 포인터로 "나"라는 모델에 "나를 ForeignKey로 가지는" 모델이 연결되는 것이다.
그러므로 참조해준 객체 입장에서 설정을 해 줘야 하는 것이다.
예시 코드
class Post(BaseModel):
user = models.ForeignKey('User', related_name='user')
user = models.ForeignKey('User', related_name='post')
전자는 user.user.all()의 결과 값이 Post내역이 나오게 된다.
후자는 이제 user.post.all()으로 Post를 조회할 수 있게 된다.
그러므로 후자가 맞는 코드이다.
'👩💻 개발 > ⚙️ BACKEND' 카테고리의 다른 글
[Django] ViewSet , Router (4) | 2022.10.08 |
---|---|
[Django] admin 계정 생성 (0) | 2022.10.08 |
[SpringBoot/JPA] 무한 참조 및 type definition error: (simple type) 문제 (0) | 2022.08.18 |
[Spring/Jpa] @Default 설정 (0) | 2022.08.12 |
[Spring/Java] @Builder / 빌더패턴 (0) | 2022.08.12 |