Пагинация для результатов поиска в Django

Я хочу добавить пагинацию к результатам поиска в django. Вот моя функция поиска в файле views.py для соответствующего модуля (Jobs):

def search(request):

queryset_list = Job.objects.order_by('-publishing_date')
if 'keywords'in request.GET:
    keywords = request.GET['keywords']
    if keywords:
        queryset_list = queryset_list.filter(description__icontains=keywords)

if 'state' in request.GET:
    state = request.GET['state']
    if state:
        queryset_list = queryset_list.filter(location__iexact=state)
        
if 'job_type' in request.GET:
    job_type = request.GET['job_type']
    if job_type:
        queryset_list = queryset_list.filter(job_type__iexact=job_type_choices)
if 'industry' in request.GET:
    industry = request.GET['industry']
    if industry:
        queryset_list = queryset_list.filter(industry__icontains=industry_choices)

if 'salary' in request.GET:
    salary = request.GET['salary']
    if salary:
        queryset_list = queryset_list.filter(salary__lte=salary)
        
context = {
    'location_choices':location_choices,
    'salary_choices':salary_choices,
    'job_type_choices':job_type_choices,
    'industry_choices':industry_choices,
    'jobs':queryset_list,
    'values':request.GET,
}

return render(request, 'jobs/search.html', context)

Это функция пагинации из того же файла:

def index(request):

jobs = Job.objects.order_by('-publishing_date').filter(is_published=True)

paginator = Paginator(jobs, 6)
page = request.GET.get('page')
paged_jobs = paginator.get_page(page)

context = {
    'jobs': paged_jobs
}  

return render(request, 'jobs/jobs.html', context)

Оба варианта работают (поиск возвращает результаты и пагинация работает на странице листинга), однако я хочу иметь пагинацию и для результатов поиска. Я очень новичок в python и django, и предполагаю, что есть более элегантный способ написать мою функцию поиска, поэтому, пожалуйста, не стесняйтесь сообщить мне ваши мысли.

Вернуться на верх