[Django] N:1 - 역참조 데이터 조회

한결·2023년 4월 17일
0

WEB

목록 보기
25/63

개요

  1. 특정 게시글에 작성된 댓글 목록 출력하기
    • 기존 필드 override
  2. 특정 게시글에 작성된 댓글의 개수 출력하기
    • 새로운 필드 추가

특정 게시글에 작성된 댓글 목록 출력하기

기본 필드 override - Article Detail

  • "게시글 조회 시 해당 게시글의 댓글 목록까지 함께 출력하기"
  • Serializer는 기존 필드를 override 하거나 추가적인 필드를 구성할 수 있음
  1. PrimaryKeyRelatedField()
    • 댓글이 있는 게시글 응답 예시

    • model.py 에서 related_name을 통해 이름 변경 가능
    • 역참조 시 생성되는 comment_set을 override할 수 있음
    • 작성 후 삭제
    • PrimaryKeyRelatedField() 는 PK는 가져오지만 내용은 안가져옴
      -> 댓글의 내용까지 가져오고 싶으면 아래꺼 써야함
  2. Nested relationships
    • 모델 관계 상으로 참조 된 대상은 참조하는 대상의 표현에 포함되거나 중첩(nested)될 수 있음
    • 이러한 중첩된 관계는 serializers를 필드로 사용하여 표현 할 수 있음
    • 두 클래스의 상/하 위치를 변경해야 함
    • 댓글이 있는 게시글 응답 예시

특정 게시글에 작성된 댓글의 개수 출력하기

  • 새로운 필드 추가 - Article Detail

    • 게시글 조회 시 해당 게시글의 댓글 개수까지 함께 출력하기
  • source

    • serailizers field's argument
    • 필드를 채우는 데 사용한 속성의 이름
    • 점 표기법을 사용하여 속성을 탐색 할 수 있음
    • 댓글이 있는 게시글 응답 예시

[주의]읽기 전용 필드 지정 이슈

  • 특정 필드를 override 혹은 추가한 경우 read_only_fields가 동작하지 않으니 주의
  • 역참조한건 read_only_fields 안먹음

    -> 각각 따로 read_only 붙여줘야함
    업로드중..

0개의 댓글