CS 면접 준비

TIL230726_2 Django ORM에서 정참조와 역참조에 대해서 설명하시오

베스트오버 2023. 7. 26. 16:59

Django ORM에서 정참조와 역참조는 모델 간의 관계를 나타내는 용어입니다.

 

  정참조는 ForeignKey나 OneToOneField와 같은 필드를 통해 다른 모델을 참조하는 것을 말합니다. 예를 들어, 사용자와 그의 포스트가 있을 때, 각 포스트는 특정 사용자에게 속하므로, 포스트 모델에서는 ForeignKey를 통해 사용자 모델을 참조합니다. 이 때 이 관계를 포스트 모델의 관점에서 보면, 이것이 정참조입니다. 즉, "포스트는 사용자를 참조한다"라는 의미로 이해할 수 있습니다.

 

  반면에, 역참조는 반대 방향의 관계를 나타냅니다. 즉, ForeignKey나 OneToOneField를 통해 참조당하는 모델의 관점에서 본 관계입니다. 위의 예에서 사용자 모델의 관점에서 보면, "사용자는 여러 포스트를 가진다"라는 관계가 되는데, 이것이 역참조입니다. Django ORM에서는 역참조를 위해 related_name 인자를 사용할 수 있습니다. 예를 들어, 포스트 모델의 사용자 필드를 user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')와 같이 정의하면, 사용자 객체 u에 대해 u.posts.all()을 호출하여 해당 사용자가 가진 모든 포스트를 조회할 수 있습니다.

 

  이렇게 Django ORM은 모델 간의 관계를 표현하고, 관계된 객체를 쉽게 조회할 수 있도록 해줍니다. 이는 데이터베이스 쿼리를 작성하는 복잡성을 줄이고, 코드의 가독성을 높여줍니다.