Browse Source

query optimization

master
Mohsen Taba 3 weeks ago
parent
commit
928613dd7a
  1. 12
      apps/hadis/serializers/serializers_admin.py
  2. 12
      apps/hadis/views_admin.py

12
apps/hadis/serializers/serializers_admin.py

@ -379,17 +379,19 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(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["book_reference"] = ref.book_reference_id if ref else None
ret["address"] = ref.address if ref else "" ret["address"] = ref.address if ref else ""
request = self.context.get("request") request = self.context.get("request")
images = list(ref.images.all()) if ref else []
ret["images"] = [ ret["images"] = [
{ {
"id": img.id, "id": img.id,
"image": request.build_absolute_uri(img.image.url) if request and img.image else img.image.url "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 return ret
@ -496,17 +498,19 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(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["book_reference"] = ref.book_reference_id if ref else None
ret["address"] = ref.address if ref else "" ret["address"] = ref.address if ref else ""
request = self.context.get("request") request = self.context.get("request")
images = list(ref.images.all()) if ref else []
ret["images"] = [ ret["images"] = [
{ {
"id": img.id, "id": img.id,
"image": request.build_absolute_uri(img.image.url) if request and img.image else img.image.url "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 return ret

12
apps/hadis/views_admin.py

@ -335,6 +335,12 @@ class AdminHadisCorrectionViewSet(ModelViewSet):
hadis_id = self.request.query_params.get("hadis_id") hadis_id = self.request.query_params.get("hadis_id")
if hadis_id: if hadis_id:
queryset = queryset.filter(hadis_id=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") return queryset.order_by("priority", "created_at")
def perform_create(self, serializer): def perform_create(self, serializer):
@ -369,6 +375,12 @@ class AdminHadisInterpretationViewSet(ModelViewSet):
category_id = self.request.query_params.get("category_id") category_id = self.request.query_params.get("category_id")
if category_id: if category_id:
queryset = queryset.filter(category_id=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") return queryset.order_by("priority", "created_at")
def perform_create(self, serializer): def perform_create(self, serializer):

Loading…
Cancel
Save