Tags
- Article & User
- 완전검색
- stack
- Queue
- distinct
- ORM
- Tree
- N:1
- create
- drf
- 트리
- 백트래킹
- 쟝고
- count
- 큐
- delete
- update
- regexp
- 뷰
- outer join
- DB
- 스택
- M:N
- 통계학
- migrations
- 그리디
- SQL
- Vue
- Django
- 이진트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
Django에 대하여(38)_DRF 역참조 데이터 구성 본문
1. Article → Comment 간 역참조 관계를 활용한 JSON 데이터 재구성
아래 2가지 사항에 대한 데이터 재구성하기
- 단일 게시글 조회 시 해당 게시글에 작성된 댓글 목록 데이터도 함께 붙여서 응답
- 단일 게시글 조회 시 해당 게시글에 작성된 댓글 개수 데이터도 함께 붙여서 응답
2. 단일 게시글 + 댓글 목록
Nested relationships
- 모델 관계상으로 참조하는 대상은 참조되는 대상의 표현에 포함되거나 중첩될 수 있다.
- 이러한 중첩된 관계는 serializers를 필드로 사용하여 표현 가능
# articles/serializers.py
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = '__all__'
read_only_fields = ('article',)
class ArticleSerializer(serializers.ModelSerializer):
comment_set = CommentSerializer(many=True, read_only=True)
class Meta:
model = Article
fields = '__all__'
read_only_fields = ('article',)
class ArticleSerializer(serializers.ModelSerializer):
comment_set = CommentSerializer(many=True, read_only=True)
class Meta:
model = Article
fields = '__all__'
3. 단일 게시글 + 댓글 개수
댓글 개수에 해당하는 새로운 필드 생성
'source'
- 필드를 채우는 데 사용할 속성의 이름
- 점 표기법(dotted notation)을 사용하여 속성을 탐색할 수 있다.
# articles/serializers.py
class ArticleSerializer(serializers.ModelSerializer):
comment_set = CommentSerializer(many=True, read_only=True)
comment_count = serializers.IntegerField(source='comment_set.count', read_only=True)
class Meta:
model = Article
fields = '__all__'
4. [주의] 읽기 전용 필드 지정 이슈
- 특정 필드를 override 혹은 추가한 경우 read_only_fields는 동작하지 않습니다.
- 해당 필드의 read_only 키워드 인자로 작성해야 합니다.
'백엔드' 카테고리의 다른 글
Django에 대하여(39)_API 문서화 (0) | 2024.05.27 |
---|---|
Django에 대하여(37)_DRF 응답 데이터 재구성 (0) | 2024.05.25 |
Django에 대하여(36)_DRF with N:1 Relation - DELETE & PUT (0) | 2024.05.24 |
Django에 대하여(35)_DRF with N:1 Relation - POST (0) | 2024.05.23 |
Django에 대하여(34)_DRF with N:1 Relation - GET (0) | 2024.05.22 |