Django Paginator. Как задать количество страниц или элементов списка

Мне нужно создать объект Paginator для function based view. Когда я отправляю запрос в googleapi, я получаю json с ключами totalItems и items. GoogleApi пагинация запроса до 10 элементов. Допустим, totalItems составляет 800, поэтому мне нужно как-то сообщить Django Paginator, что элементов больше, чем я получаю в запросе.

Моей первой идеей было просто создать список с пустыми элементами и элементами, полученными из API, с индексами, соответствующими номеру страницы, но я полагаю, что для этого есть какой-нибудь хороший чистый трюк"

VIEW

def get_books(request):
    page = request.GET.get('page', 1)
    start_index = (page - 1) * 10 
    params = {'q': RoweryMogąUratowaćŚwiat, startIndex: start_index}
    result = requests.get('https://www.googleapis.com/books/v1/volumes?,params=params)
    total = result['totalItems']        
    items = result['items']
    my_list = []        
    for i in range(total)
        if start_index < i < start_index + 10
             my_list.append(items[i - start_index])
        else:
             my_list.append('')

    paginator = Paginator(my_list, 10)
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def get_books(request):

    result = requests.get('https://www.googleapis.com/books/v1/volumes?,params=params)
    items = result['items']
    
    page = request.GET.get('page', 1)
    paginator = Paginator(items, 10)
    
    try:
       data = paginator.page(page)
    except PageNotAnInteger:
       data = paginator.page(1)
    except EmptyPage:
       data = paginator.page(paginator.num_pages)    

    return render(request, 'books.html', { 'data': data })
 
Вернуться на верх