Я закончил абстрагированием нумерации страниц в отдельную функцию, которая выглядит следующим образом.
def pagination(request, objects, pages):
paginator = Paginator(objects, pages)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
results = paginator.page(page)
except (EmptyPage, InvalidPage):
results = paginator.page(paginator.num_pages)
return results
И я смог реорганизовать функцию индексации / поиска до этой.
def index(request):
if 'q' in request.GET:
company_list = Company.objects.filter(
Q(company__icontains = request.GET['q']) |
Q(county__icontains = request.GET['q']) |
Q(city__icontains = request.GET['q']) |
Q(product_description__icontains = request.GET['q'])
)
query = request.GET['q']
companies = pagination(request, company_list, 10)
return render_response(request, 'database/index.html', {"companies": companies, "query": query})
else:
company_list = Company.objects.all()
companies = pagination(request, company_list, 10)
return render_response(request, 'database/index.html', {"companies": companies})
Мне все еще не нравится, что я повторяю линию нумерации страниц, но это кажется немного лучше.