-
[Django]StoryIncludedCurationAPIDjango_BE 2023. 7. 21. 02:02
스토리가 포함된 큐레이션 리스트를 반환하는 api를 개발한다
이를 위해, 먼저 Curation의 모델 구조를 파악했다.
Curation 과 Story는 일대다의 관계이므로
큐레이션이 생성되는 Curation 필드와
큐레이션과 스토리를 매핑하는 Curation_Story 필드가 있었다
이거 이해하는데 좀 걸렸다
그 후에는 이미 존재하는 쿼리 구조를 파악하는 시간을 가졌다.
현재 curaiton_id가 주어지면 그에 해당하는 story_detail을 반환하는 CurationStoryDetail Api의 구조를 파악했다
아래와 같다
이를 내가 개발해야하는 api에 적용하여 이해한건 아래와 같다
내가 한 계획: 첫번째 아이디어: curation_story 모델에서 story_id가 일치하는 큐레이션 리스트를 뽑아오자는 아이디어
따라서 일단 curation_story에 있는 모든 데이터를 뽑아보았다
class StoryIncludedCurationSelector: def __init__(self, user:User): self.user = user def list(self): curation_list = Curation_Story.objects.all() return curation_list
요러코롬
결과는 이렇게 나옴!
두번째 아이디어: Curation 모델에서 story가 스토리 아이디와 같은 큐레이션을 뽑아낼 수 없을까
일단 두번째부터 시도해보자
"정리"
Curation_Story 객체에서 story_id에 해당하는 객체들만 뽑아냄(filter을 이용)
values_list()를 이용해서 curation 필드만을 포함하는 리스트로 반환한다
는 Django 쿼리셋에서 사용하는 메서드로서, 데이터베이스에서 가져온 쿼리 결과를 특정 필드(들)만을 포함하는 값의 리스트로 반환합니다. 이를 통해 쿼리셋에서 특정 필드들만 추출하여 사용할 수 있습니다.
반환한 리스트에 해당하는 curation 객체들을 가져온다
내 아이디어의 문제점
아이디어1
:Curation과 Story의 일대다 관계를 고려하지 않았음
아이디어2
:Curation_Story에 대해 검색하면 당연히 이 객체가 반환되는데 그걸 잊고 Curation 객체가 반환될것이라 생각함
이번 쿼리 개발을 통해 느낀점
일대다 관계에 있는 필드 사이에서 필요한 api를 개발하는 것은 다른 스킬이 필요함을 느꼈다
이건 따로 정리해야할듯
'Django_BE' 카테고리의 다른 글
[Django]annotate/Concat/F가 궁금해요 (0) 2023.07.24 [Django]일대다 관계에 있는 객체의 거꾸로 접근(values_list, pk__in) (0) 2023.07.21 [Django]다른 팀원의 코드를 pull 했을때 오류가 난다면? (0) 2023.06.07 [Django]외래키관계를 통해 정의된 모델의 필드 가져오기 (0) 2023.06.06 [Django]에러 (0) 2023.06.05