Django_BE

[Django]외래키관계를 통해 정의된 모델의 필드 가져오기

잠이와요 2023. 6. 6. 02:30

모델로 PlaceVisitorReview를 사용하고 있는 상황

PlaceVisitorReview에는

place = models.ForeignKey("Place", on_delete=models.CASCADE)
visitor_name = models.ForeignKey(
    "users.User", on_delete=models.CASCADE)  # 리뷰다는 사람 이름
contents = models.TextField(
    help_text="리뷰를 작성해주세요.", blank=False, null=False)  # 내용 작성

이렇듯 세가지 필드만 있는데 나는 place_name이 가지고 오고 싶었다. (+추가적인 place에 관한 정보도..!)

현재 코드는 아래와 같다

 

class UserReviewedGetApi(APIView):
    class Pagination(PageNumberPagination):
        page_size = 6
        page_size_query_param = 'page_size'

    class UserReviewedGetSerializer(serializers.ModelSerializer):

        place_id = serializers.IntegerField()


        class Meta:
            model = PlaceVisitorReview
            fields = ['place_id']

내가 얻은 답:

`UserReviewedGetApi` 뷰를 사용할 때 `place_name`을 가져오기 위해서는 `UserReviewedGetSerializer` 클래스를 다음과 같이 수정합니다:

class UserReviewedGetSerializer(serializers.ModelSerializer):
    place_name = serializers.CharField(source='place.place_name')

    class Meta:
        model = PlaceVisitorReview
        fields = ['place_id', 'place_name']



시리얼라이저에 `place_name = serializers.CharField(source='place.place_name')`을 추가함으로써, `PlaceVisitorReview` 모델에서 정의된 외래 키 관계를 통해 관련된 `Place` 모델의 `place_name` 필드를 가져올 수 있습니다.