Python 如何在django查询集中获取下一个n记录?

Python 如何在django查询集中获取下一个n记录?,python,django,Python,Django,有没有办法在django queryset中获取下一个n记录 例如,在获得前五条记录后,我如何获得接下来的五条记录?我的用例是,我的页面上有一个“查看更多”按钮,每当单击“查看更多”按钮时(通过ajax),我都希望加载接下来的5条记录 我想做这样的事情 #function that handles ajax def load_next_five(initial_five) next_five = initial_five.??? return JsonResponse({'nex

有没有办法在django queryset中获取下一个n记录

例如,在获得前五条记录后,我如何获得接下来的五条记录?我的用例是,我的页面上有一个“查看更多”按钮,每当单击“查看更多”按钮时(通过ajax),我都希望加载接下来的5条记录

我想做这样的事情

#function that handles ajax
def load_next_five(initial_five)
    next_five = initial_five.???
    return JsonResponse({'next_five': list(next_five)})

def main_view(request):
    initial_five = Car.objects.filter(year__gte=2000)
    ...

如何执行“加载下一个”功能?

使用切片。你必须从你想开始的地方通过

def load_next_five(start)
    next_five = Car.objects.filter(year__gte=2000)[start:start+5]
    return JsonResponse({'next_five': list(next_five)})

def main_view(request):
    initial_five = Car.objects.filter(year__gte=2000)[:5]

在封面下,Django将把它转换为限制数据库端结果的子句(例如,limit和OFFSET)

遵循django paginator,易于使用

def load_next_five(request):
    car_obj = Car.objects.all()
    paginator = Paginator(car_obj, 5) # change this number as you required
    page = request.GET.get('page')

    try:
        cars = paginator.page(page)
    except PageNotAnInteger:
        cars = paginator.page(1)
    except EmptyPage:
        cars = paginator.page(paginator.num_pages)

    return JsonResponse({'cars': cars})

查看分页。Django Rest框架还提供了一些分页工具,这些工具可能对您有用!我不知道Django中存在这种功能。您是否碰巧有一个指向“开始”部分文档的链接?查找“限制查询集”部分