繁体   English   中英

如何获取Django查询集中的下n条记录?

[英]How to get the next n records in a django queryset?

有没有办法在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)
    ...

我将如何处理load_next_five函数?

用一片。 您必须传递您想开始的地方。

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分页器,易于使用。

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})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM