|
1 | 1 | from django.db.models import QuerySet |
2 | 2 | from django.db.models import Q |
3 | 3 | from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector |
4 | | -from django.core.paginator import Paginator, Page, EmptyPage, PageNotAnInteger, InvalidPage |
| 4 | +from django.core.paginator import ( |
| 5 | + Paginator, |
| 6 | + Page, |
| 7 | + EmptyPage, |
| 8 | + PageNotAnInteger, |
| 9 | + InvalidPage, |
| 10 | +) |
5 | 11 | from django.conf import settings |
6 | 12 |
|
7 | 13 | from .models import PostLike, PostDislike, Post, PostComment |
8 | 14 |
|
9 | 15 |
|
10 | | -def get_search_model_queryset( |
11 | | - model_queryset: QuerySet, query: str = None |
12 | | -) -> QuerySet: |
| 16 | +def get_search_model_queryset(model_queryset: QuerySet, query: str = None) -> QuerySet: |
13 | 17 | if not query: |
14 | 18 | return model_queryset |
15 | 19 |
|
16 | 20 | search_vector = SearchVector("title", "description", "content") |
17 | 21 | search_query = SearchQuery(query) |
18 | 22 |
|
19 | | - if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.postgresql': |
| 23 | + if settings.DATABASES["default"]["ENGINE"] == "django.db.backends.postgresql": |
20 | 24 | # PostgreSQL search |
21 | | - queryset = model_queryset.annotate( |
22 | | - search=search_vector, |
23 | | - rank=SearchRank(search_vector, search_query), |
24 | | - ).filter(search=search_query).order_by('-rank') |
| 25 | + queryset = ( |
| 26 | + model_queryset.annotate( |
| 27 | + search=search_vector, |
| 28 | + rank=SearchRank(search_vector, search_query), |
| 29 | + ) |
| 30 | + .filter(search=search_query) |
| 31 | + .order_by("-rank") |
| 32 | + ) |
25 | 33 | else: |
26 | 34 | # SQLite3 search |
27 | 35 | queryset = model_queryset.filter( |
|
0 commit comments