diff --git a/apps/hadis/views/transmitter.py b/apps/hadis/views/transmitter.py index 80b9cd4..9611858 100644 --- a/apps/hadis/views/transmitter.py +++ b/apps/hadis/views/transmitter.py @@ -262,19 +262,22 @@ class TransmitterFiltersView(ListAPIView): def list(self, request, *args, **kwargs): return Response(get_transmitter_filters(request)) +from ..serializers.category import CategorySerializer +from ..models.category import HadisCategory + class NarratorArgumentsListView(ListAPIView): """ - API view to list all Hadis (arguments) where a specific narrator - exists in the transmission chain (prefetching category and status). + API view to list all Hadis Categories where a specific narrator + exists in the transmission chain of hadiths within that category. """ - serializer_class = HadisListSerializer + serializer_class = CategorySerializer pagination_class = StandardResultsSetPagination # در صورت نیاز به احراز هویت می‌توانید کامنت زیر را باز کنید: # authentication_classes = [TokenAuthentication] @swagger_auto_schema( - operation_summary="Narrator Arguments List", - operation_description="Returns a paginated list of Hadis (arguments) for a specific narrator.", + operation_summary="Narrator Arguments List (Categories)", + operation_description="Returns a paginated list of Hadis Categories for a specific narrator based on the hadiths they appear in.", tags=['Dobodbi - Hadis (V2)'], ) def get(self, request, *args, **kwargs): @@ -283,13 +286,10 @@ class NarratorArgumentsListView(ListAPIView): def get_queryset(self): narrator_slug = self.kwargs.get('narrator_slug') - # فیلتر کردن احادیث فعال که این راوی در زنجیره سند (transmitters) آن‌ها حضور دارد - return Hadis.objects.filter( - transmitters__transmitter__slug=narrator_slug, - status=True - ).select_related( - 'category__sect', - 'hadis_status' + # فیلتر کردن دسته‌بندی‌هایی که در آن‌ها حدیث فعالی وجود دارد که این راوی در زنجیره آن حضور دارد + return HadisCategory.objects.filter( + hadis__transmitters__transmitter__slug=narrator_slug, + hadis__status=True ).distinct().order_by('id')