From 928613dd7ad2cc0b3015fa34ef16d015ce2bb5d8 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Sat, 1 Aug 2026 11:15:33 +0330 Subject: [PATCH] query optimization --- apps/hadis/serializers/serializers_admin.py | 12 ++++++++---- apps/hadis/views_admin.py | 12 ++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/hadis/serializers/serializers_admin.py b/apps/hadis/serializers/serializers_admin.py index 150472d..81dcaf3 100644 --- a/apps/hadis/serializers/serializers_admin.py +++ b/apps/hadis/serializers/serializers_admin.py @@ -379,17 +379,19 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer): def to_representation(self, instance): ret = super().to_representation(instance) - ref = instance.references.first() + refs = list(instance.references.all()) + ref = refs[0] if refs else None ret["book_reference"] = ref.book_reference_id if ref else None ret["address"] = ref.address if ref else "" request = self.context.get("request") + images = list(ref.images.all()) if ref else [] ret["images"] = [ { "id": img.id, "image": request.build_absolute_uri(img.image.url) if request and img.image else img.image.url } - for img in (ref.images.all() if ref else []) + for img in images ] return ret @@ -496,17 +498,19 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer): def to_representation(self, instance): ret = super().to_representation(instance) - ref = instance.references.first() + refs = list(instance.references.all()) + ref = refs[0] if refs else None ret["book_reference"] = ref.book_reference_id if ref else None ret["address"] = ref.address if ref else "" request = self.context.get("request") + images = list(ref.images.all()) if ref else [] ret["images"] = [ { "id": img.id, "image": request.build_absolute_uri(img.image.url) if request and img.image else img.image.url } - for img in (ref.images.all() if ref else []) + for img in images ] return ret diff --git a/apps/hadis/views_admin.py b/apps/hadis/views_admin.py index f226c7a..272a208 100644 --- a/apps/hadis/views_admin.py +++ b/apps/hadis/views_admin.py @@ -335,6 +335,12 @@ class AdminHadisCorrectionViewSet(ModelViewSet): hadis_id = self.request.query_params.get("hadis_id") if hadis_id: queryset = queryset.filter(hadis_id=hadis_id) + search = self.request.query_params.get("search") + if search: + from django.db.models import Q + queryset = queryset.filter( + Q(title__icontains=search) | Q(text__icontains=search) + ) return queryset.order_by("priority", "created_at") def perform_create(self, serializer): @@ -369,6 +375,12 @@ class AdminHadisInterpretationViewSet(ModelViewSet): category_id = self.request.query_params.get("category_id") if category_id: queryset = queryset.filter(category_id=category_id) + search = self.request.query_params.get("search") + if search: + from django.db.models import Q + queryset = queryset.filter( + Q(title__icontains=search) | Q(text__icontains=search) + ) return queryset.order_by("priority", "created_at") def perform_create(self, serializer):