-
[Django]일대다 관계에 있는 객체의 거꾸로 접근(values_list, pk__in)Django_BE 2023. 7. 21. 02:34
curation_story = Curation_Story.objects.filter(story_id=your_story_id) curations = curation_story.values_list('curation', flat=True) curation_objects = Curation.objects.filter(pk__in=curations)
위의 코드에서 your_story_id는 원하는 스토리의 ID입니다. 이 코드를 사용하여 해당 스토리와 관련된 Curation 객체들을 가져올 수 있습니다.
- 먼저 Curation_Story 모델에서 원하는 스토리(your_story_id)와 관련된 Curation_Story 객체들을 가져옵니다. 이때 filter() 메서드를 사용하여 story_id가 your_story_id와 일치하는 객체들을 찾습니다.
- curation_story.values_list('curation', flat=True) 코드는 Curation_Story 모델의 curation 필드에 해당하는 값을 가져옵니다. flat=True를 사용하면 튜플 형태가 아닌 단일 값들의 리스트를 반환합니다.
- Curation.objects.filter(pk__in=curations) 코드는 Curation 모델에서 curations 리스트에 해당하는 큐레이션 객체들을 가져옵니다. pk__in은 주어진 리스트 안의 값을 가지는 Primary Key를 검색하는 필터링 방법입니다.
이렇게 하면 원하는 스토리와 관련된 모든 Curation 객체들을 얻을 수 있습니다. curations 변수에 해당하는 큐레이션 객체들이 담겨있습니다.
"포인트"
1. values_list()는 Django 쿼리셋에서 사용하는 메서드로서, 데이터베이스에서 가져온 쿼리 결과를 특정 필드(들)만을 포함하는 값의 리스트로 반환합니다. 이를 통해 쿼리셋에서 특정 필드들만 추출하여 사용할 수 있습니다.
2. pk__in은 주어진 리스트 안의 값을 가지는 Primary Key를 검색하는 필터링 방법입니다.
'Django_BE' 카테고리의 다른 글
[Django]model 만들기 (0) 2023.09.08 [Django]annotate/Concat/F가 궁금해요 (0) 2023.07.24 [Django]StoryIncludedCurationAPI (0) 2023.07.21 [Django]다른 팀원의 코드를 pull 했을때 오류가 난다면? (0) 2023.06.07 [Django]외래키관계를 통해 정의된 모델의 필드 가져오기 (0) 2023.06.06