Я сейчас использую paginator на столе. Я хочу добавить выбор для фильтрации таблицы, но мне не удается перемещаться по страницам без потери выбора.
В настоящее время (см. Код ниже), когда я перемещаюсь, нажимая на предыдущую или следующую, опция, выбранная с помощьюиспользуется потеряно, и все данные представлены.
Я должен изменить условие 'else', чтобы учесть выбранную опцию. Я думал об использовании глобальной переменной для сохранения выбранной опции в переменной, но это может иметь побочный эффект, и это не очень рекомендуется ...
views.py
@login_required
def index(request):
# data sent (click on 'search' button or option selected)
if request.POST:
# data from select
selection = request.POST.get('selection', False)
# data from search
ide = request.POST.get('ide', False)
# search
if ide == "":
paginator = Paginator(Preinclusion.objects.all(), 5)
preincluded = paginator.page(1)
else:
paginator = Paginator(Preinclusion.objects.filter(pat_num__startswith = ide),5)
preincluded = paginator.page(1)
# select
if selection == 'Randomized':
print('Randomized')
paginator = Paginator([patient for patient in Preinclusion.objects.all() if patient.is_randomized], 5)
preincluded = paginator.page(1)
elif selection == 'Not randomized':
print('Not randomized')
paginator = Paginator([patient for patient in Preinclusion.objects.all() if not patient.is_randomized], 5)
preincluded = paginator.page(1)
elif selection == 'All patients':
print('All patients')
paginator = Paginator(Preinclusion.objects.all(), 5)
preincluded = paginator.page(1)
if not preincluded:
liste_existe = False # non utilisé dans le template
else:
# first index visited
paginator = Paginator(Preinclusion.objects.all(), 5)
page = request.GET.get('page')
try:
preincluded = paginator.page(page)
except PageNotAnInteger:
preincluded = paginator.page(1)
except EmptyPage:
preincluded = paginator.page(paginator.num_pages)
return render(request, 'randomization/index.html', {'preincluded': preincluded})
Я бынапример store
выбранный параметр для предыдущей / следующей навигации.