Django-filter AssertionError: Невозможно фильтровать запрос после того, как был взят фрагмент
Я использую Django-фильтр, я хочу нарезать строки, только первые 75 строк:
def hist_view_render(request):
all_obj = RunStats.objects.all().order_by('-create_dttm')[:75]
hist_filter = RunStatsFilter(request.GET, queryset=all_obj)
paginator= Paginator(hist_filter.qs, 15)
page = request.GET.get('page')
try:
response = paginator.page(page)
except PageNotAnInteger:
response = paginator.page(1)
except EmptyPage:
response = paginator.page(paginator.num_pages)
context = {'response': response,'filter': hist_filter}
return render(request, 'runstat_hist.html',context)
Я пробовал ставить [:75] в разных местах, но всегда получаю ошибку:
Cannot filter a query once a slice has been taken
Единственный способ, который работает, это нарезать его в шаблоне, но я хочу найти способ нарезать его в views.py.
Любой друг может помочь?
Проблема возникает, когда пагинатор разрезает queryset, чтобы получить список объектов для страницы. Вы можете передать пагинатору список, чтобы при нарезке не возникала ошибка
all_obj = RunStats.objects.all().order_by('-create_dttm')
hist_filter = RunStatsFilter(request.GET, queryset=all_obj)
paginator = Paginator(list(hist_filter.qs[:75]), 15)