Django, limit queryset without slicing

from django.db.models import F, Window
from django.db.models.functions import RowNumber

# Define the queryset
queryset = YourModel.objects.all()

# Define the window specification
window = Window(order_by=F('your_ordering_field'))

# Annotate the queryset with row numbers
queryset = queryset.annotate(row_number=RowNumber())

# Set the desired range of rows to retrieve
start_row = 1
end_row = 10

# Filter the queryset based on the row numbers
queryset = queryset.filter(row_number__gte=start_row, row_number__lte=end_row)

# Optional: Order the final result based on your desired ordering field
queryset = queryset.order_by('your_ordering_field')