From 8c5f707736af3f582f625d18dab0508a530409ac Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Mon, 24 Aug 2026 15:06:51 +0330 Subject: [PATCH] feat(hadis): add collections_detail to AdminHadisListSerializer for collection management --- apps/hadis/serializers/serializers_admin.py | 6 ++++++ apps/hadis/views_admin.py | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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: