Django_BE

[Django]StoryIncludedCurationAPI

잠이와요 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를 개발하는 것은 다른 스킬이 필요함을 느꼈다

이건 따로 정리해야할듯