CS 면접 준비

TIL230801_2 Serializer를 통해서 역참조 하는 방법에 대해서 설명하시오

베스트오버 2023. 8. 2. 03:33

Serializer를 사용하여 역참조를 하는 방법에 대해 설명해보겠습니다.

Django에서 역참조는 외래 키(ForeignKey)를 설정한 모델과 연결된 다른 모델에서 데이터를 참조하는 방법을 의미합니다. 이를테면, Book 모델이 Author 모델을 외래키로 가질 때, Author 모델에서 자신이 저술한 모든 책들을 참조하는 경우를 생각해볼 수 있습니다. 이때, 이런 참조를 '역참조'라 합니다.

이러한 역참조를 Serializer에서 구현하려면, 먼저 역참조하려는 필드를 Serializer에서 정의해야 합니다. 여기서는 Author 모델에서 Book 모델을 역참조하는 것을 구현하겠습니다. 이를 위해 serializers.StringRelatedField와 같은 필드를 사용할 수 있습니다. 이 필드는 관계형 필드로서, 다른 모델과의 관계를 문자열로 나타냅니다.

pythonCopy code
from rest_framework import serializers
from .models import Book, Author

class AuthorSerializer(serializers.ModelSerializer):
    books = serializers.StringRelatedField(many=True, read_only=True)

    class Meta:
        model = Author
        fields = ['name', 'books']

여기서 booksAuthor 모델에서 Book 모델을 역참조하는 필드를 정의하는 부분입니다. many=True 옵션은 AuthorBook이 1:N 관계임을 나타내며, read_only=True 옵션은 이 필드가 읽기 전용이라는 것을 의미합니다.

이렇게 하면 AuthorSerializer를 사용하여 Author 인스턴스를 serialize할 때, 저자가 저술한 모든 책들이 books 필드에 포함되어 반환됩니다. 이 방법을 통해 Serializer에서 역참조를 수행하는 것이 가능해집니다.

더욱 복잡한 필드 구조를 요구하는 경우, 직접 Serializer를 만들어 books 필드를 정의하는 것도 가능합니다. 이렇게 되면 각 책에 대한 더 많은 정보를 제공할 수 있습니다.