Django_BE
[Django]일대다 관계에 있는 객체의 거꾸로 접근(values_list, pk__in)
잠이와요
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를 검색하는 필터링 방법입니다.