TIL230726_2 Django ORM에서 정참조와 역참조에 대해서 설명하시오
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은 모델 간의 관계를 표현하고, 관계된 객체를 쉽게 조회할 수 있도록 해줍니다. 이는 데이터베이스 쿼리를 작성하는 복잡성을 줄이고, 코드의 가독성을 높여줍니다.