Refactor search view to improve query handling and pagination logic
This commit is contained in:
parent
653847df6a
commit
97ddd2dfd1
@ -2,6 +2,7 @@ from urllib.parse import urlencode
|
|||||||
|
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
from wagtail.models import Site
|
from wagtail.models import Site
|
||||||
|
|
||||||
@ -16,12 +17,17 @@ def search(request):
|
|||||||
results_count = 0
|
results_count = 0
|
||||||
|
|
||||||
if search_query:
|
if search_query:
|
||||||
search_queryset = ArticlePage.objects.live().search(search_query)
|
primary_qs = ArticlePage.objects.live().search(search_query)
|
||||||
paginator = Paginator(search_queryset, PAGE_SIZE)
|
results_count = primary_qs.count()
|
||||||
results_page = paginator.get_page(page_number)
|
|
||||||
results_count = paginator.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:
|
if results_count:
|
||||||
|
paginator = Paginator(primary_qs, PAGE_SIZE)
|
||||||
|
results_page = paginator.get_page(page_number)
|
||||||
query_string = urlencode({"query": search_query})
|
query_string = urlencode({"query": search_query})
|
||||||
category_sections = [
|
category_sections = [
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user