Django Academy · 강의

related_name과 역방향 조회

양방향으로 관계를 탐색합니다

레슨 4/413개 단계

related_name과 역방향 조회은(는) CoddyKit의 무료 Django Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Django Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Django Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

연결은 양방향으로 이동합니다

책에서 저자로 ForeignKey를 설정했더라도 반대 방향으로 이동할 수 있습니다. 역방향 조회를 사용하면 하나 쪽에서 여러 개 쪽에 접근할 수 있습니다.

기본 _set 관리자

기본적으로 Django는 역방향 접근자의 이름을 modelname_set으로 지정합니다. 저자에서는 책이 book_set으로 나타납니다.

author = Author.objects.first()
author.book_set.all()

_set은 관리자입니다

book_set은 완전한 관리자이므로 일반 쿼리처럼 그 위에 filter, order_by, count를 연결할 수 있습니다.

author.book_set.filter(published=True).count()

related_name으로 이름 지정하기

_set이라는 이름은 다소 어색합니다. ForeignKey에 related_name을 설정하여 더 명확한 역방향 접근자 이름을 직접 지정하세요.

author = models.ForeignKey(Author, related_name="books", on_delete=models.CASCADE)

더 깔끔한 역방향 접근

이제 역방향 접근이 자연스러워집니다. book_set 대신 books라고 쓰면 되어 훨씬 이해하기 쉽습니다.

author.books.all()

쿼리에서 역방향 사용하기

related_name은 연결을 가로지르는 filter에도 사용됩니다. 다른 모델에서 이중 밑줄과 함께 지정한 이름을 사용하세요.

Author.objects.filter(books__published=True)

기본 쿼리 이름

related_name을 생략하면 역방향 쿼리 이름은 소문자 모델 이름이 됩니다. 예를 들어 author.objects.filter(book__title=...)처럼 사용합니다.

이름 충돌 피하기

한 모델에서 같은 대상에 ForeignKey를 두 개 설정하면 역방향 이름이 충돌합니다. 각각에 서로 다른 related_name을 지정하면 해결됩니다.

writer = models.ForeignKey(User, related_name="written", on_delete=models.CASCADE)
editor = models.ForeignKey(User, related_name="edited", on_delete=models.CASCADE)

역방향 접근 끄기

역방향 접근자가 필요하지 않다면 related_name을 +로 끝나는 값으로 설정하여 완전히 비활성화하세요.

owner = models.ForeignKey(User, related_name="+", on_delete=models.CASCADE)

related_query_name

이름을 나누어 지정할 수도 있습니다. related_query_name은 관련 행을 읽을 때 사용하는 속성과 별도로 필터 이름을 설정합니다.

tags = models.ManyToManyField(Tag, related_name="posts", related_query_name="post")

모든 관계에서 작동합니다

related_name은 ForeignKey, ManyToManyField, OneToOneField 모두에 적용되므로 모든 역방향 경로를 명확하게 지정할 수 있습니다.

빠른 확인

Book의 author ForeignKey에 related_name="books"를 설정했습니다. 저자의 책을 어떻게 나열할까요?

복습

해내셨습니다! 역방향 조회는 연결을 뒤쪽으로 이동하게 하며, related_name은 어색한 _set 접근자를 명확하고 읽기 쉬운 이름으로 바꿉니다. 🔄

무료로 시작

AI 튜터와 함께 Python을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
30
레슨
120

자주 묻는 질문

“related_name과 역방향 조회” 강의는 무료인가요?

네 — “related_name과 역방향 조회” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Django Academy 강의 전체를 잠금 해제할 수 있습니다. Django Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“related_name과 역방향 조회”에서 뭘 배우나요?

양방향으로 관계를 탐색합니다 브라우저에서 직접 실행하는 실습 코드로 Django Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Django Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Django Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“related_name과 역방향 조회” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Django Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Django Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. ForeignKey와 on_delete
  2. ManyToManyField와 중간 모델
  3. 프로필을 위한 OneToOneField
  4. related_name과 역방향 조회
← Django Academy(으)로 돌아가기