¿Hay alguna forma de obtener los siguientes n registros en el conjunto de consultas de django?
Por ejemplo, ¿cómo obtendría los siguientes 5 registros después de obtener los primeros cinco registros? Mi caso de uso es que tengo un botón para ver más en mi página y quiero cargar los siguientes 5 registros cada vez que se hace clic en el botón para ver más (a través de ajax)
me gustaria hacer algo asi
#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) ...¿Cómo haría para la función load_next_five?
usa una rebanada. Tendrás que pasar por donde quieras empezar.
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]Debajo de las cubiertas, Django convertirá eso en cláusulas que limitarán los resultados en el lado de la base de datos (por ejemplo, LIMIT y OFFSET).
Siga el paginador de django, fácil de usar.
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})