Community > Category > Feed의 구조이다
class FeedCategoryListView(APIView):
pagination_class = CustomPagination()
# feed 카테고리 리스트 view
def get(self, request, community_name, category_name):
feed_list = Feed.objects.filter(category__community__title=community_name, category__category_name=category_name).order_by("-created_at")
category__community_title이라는 표현은 실제로는 존재하지 않는 필터 조건이지만,
Django에서는 필터링 시 관계된 모델의 필드에 접근할 때 __ (언더스코어)를 사용하여 관계를 탐색한다
따라서 category__community__title=community_name과 같은 형태를 통해
community = Community.objects.get(title=community_name)
category = Category.objects.get(category_name=category_name)
여러번 해당 조건의 객체를 가져올 필요 없이
feed_list = Feed.objects.filter(category__community__title=community_name, category__category_name=category_name)
위와 같은 한 줄로 category 필드의 Community 모델의 title 필드와
Category 모델의 community_name 값이 일치하는 Feed 객체들이 필터링된다
'Django' 카테고리의 다른 글
Django 50문 50답 (4) | 2023.07.26 |
---|---|
django signal pre_save (2) | 2023.06.15 |
drf swagger 문서화 (1) | 2023.05.29 |
Django admin 페이지 커스텀하기 (1) | 2023.05.23 |
Django sqlite3 mysql로 변경하기 (11) | 2023.05.09 |