diff --git a/apps/hadis/serializers/serializers_admin.py b/apps/hadis/serializers/serializers_admin.py index 5f314ee..1b35165 100644 --- a/apps/hadis/serializers/serializers_admin.py +++ b/apps/hadis/serializers/serializers_admin.py @@ -99,6 +99,7 @@ class AdminHadisTagSerializer(serializers.ModelSerializer): class AdminHadisListSerializer(serializers.ModelSerializer): category_detail = AdminHadisCategorySerializer(source="category", read_only=True) hadis_status_detail = AdminHadisStatusSerializer(source="hadis_status", read_only=True) + collections_detail = serializers.SerializerMethodField() class Meta: model = Hadis @@ -115,11 +116,16 @@ class AdminHadisListSerializer(serializers.ModelSerializer): "category_detail", "hadis_status", "hadis_status_detail", + "collections_detail", "created_at", "updated_at", ] read_only_fields = ["id", "slug", "created_at", "updated_at"] + def get_collections_detail(self, obj): + collections = [item.collection for item in obj.collection_items.all()] + return AdminHadisCollectionSerializer(collections, many=True).data + class HadisCollectionsField(serializers.PrimaryKeyRelatedField): def to_representation(self, value): diff --git a/apps/hadis/views_admin.py b/apps/hadis/views_admin.py index 49baf2d..9a8f865 100644 --- a/apps/hadis/views_admin.py +++ b/apps/hadis/views_admin.py @@ -293,7 +293,11 @@ class AdminHadisViewSet(ModelViewSet): return AdminHadisDetailSerializer def get_queryset(self): - queryset = Hadis.objects.all().select_related("category__sect", "hadis_status") + queryset = ( + Hadis.objects.all() + .select_related("category__sect", "hadis_status") + .prefetch_related("collection_items__collection") + ) search_query = self.request.query_params.get("search") if search_query: