Browse Source

feat(hadis): add collections_detail to AdminHadisListSerializer for collection management

master
Mohsen Taba 23 hours ago
parent
commit
8c5f707736
  1. 6
      apps/hadis/serializers/serializers_admin.py
  2. 6
      apps/hadis/views_admin.py

6
apps/hadis/serializers/serializers_admin.py

@ -99,6 +99,7 @@ class AdminHadisTagSerializer(serializers.ModelSerializer):
class AdminHadisListSerializer(serializers.ModelSerializer): class AdminHadisListSerializer(serializers.ModelSerializer):
category_detail = AdminHadisCategorySerializer(source="category", read_only=True) category_detail = AdminHadisCategorySerializer(source="category", read_only=True)
hadis_status_detail = AdminHadisStatusSerializer(source="hadis_status", read_only=True) hadis_status_detail = AdminHadisStatusSerializer(source="hadis_status", read_only=True)
collections_detail = serializers.SerializerMethodField()
class Meta: class Meta:
model = Hadis model = Hadis
@ -115,11 +116,16 @@ class AdminHadisListSerializer(serializers.ModelSerializer):
"category_detail", "category_detail",
"hadis_status", "hadis_status",
"hadis_status_detail", "hadis_status_detail",
"collections_detail",
"created_at", "created_at",
"updated_at", "updated_at",
] ]
read_only_fields = ["id", "slug", "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): class HadisCollectionsField(serializers.PrimaryKeyRelatedField):
def to_representation(self, value): def to_representation(self, value):

6
apps/hadis/views_admin.py

@ -293,7 +293,11 @@ class AdminHadisViewSet(ModelViewSet):
return AdminHadisDetailSerializer return AdminHadisDetailSerializer
def get_queryset(self): 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") search_query = self.request.query_params.get("search")
if search_query: if search_query:

Loading…
Cancel
Save