From 97ddd2dfd14063d10617c20a434322566fca7343 Mon Sep 17 00:00:00 2001 From: Warren Chen Date: Tue, 11 Nov 2025 13:49:10 +0900 Subject: [PATCH] Refactor search view to improve query handling and pagination logic --- innovedus_cms/search/views.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/innovedus_cms/search/views.py b/innovedus_cms/search/views.py index e76fbf1..d93687c 100644 --- a/innovedus_cms/search/views.py +++ b/innovedus_cms/search/views.py @@ -2,6 +2,7 @@ from urllib.parse import urlencode from django.core.paginator import Paginator from django.template.response import TemplateResponse +from django.db.models import Q from wagtail.models import Site @@ -16,12 +17,17 @@ def search(request): results_count = 0 if search_query: - search_queryset = ArticlePage.objects.live().search(search_query) - paginator = Paginator(search_queryset, PAGE_SIZE) - results_page = paginator.get_page(page_number) - results_count = paginator.count + primary_qs = ArticlePage.objects.live().search(search_query) + results_count = primary_qs.count() + + if not results_count: + fallback_filter = Q(intro__icontains=search_query) | Q(body__icontains=search_query) + primary_qs = ArticlePage.objects.live().filter(fallback_filter).order_by("-date") + results_count = primary_qs.count() if results_count: + paginator = Paginator(primary_qs, PAGE_SIZE) + results_page = paginator.get_page(page_number) query_string = urlencode({"query": search_query}) category_sections = [ {