Django - Храните данные отфильтрованными в течение всего сеанса с помощью django-filters

У меня есть представление, которое перечисляет все данные из модели с формой, которая позволяет фильтровать данные с помощью библиотеки django-filters. Представление также хранит отфильтрованные данные в сессии, внутри переменной form_data. Представление:

def list_accsplan(request):
    accsplan = AccountsPlan.objects.all().order_by('code')
    accsplanfilter = AccountsPlanFilter(request.GET, queryset=accsplan)

    request.session['form_data'] = accsplanfilter.data
    form_data = request.session.get('form_data')

    paginator = Paginator(accsplanfilter.qs, 30)
    page = request.GET.get('page')

    try:
        dataqs = paginator.page(page)
    except PageNotAnInteger:
        dataqs = paginator.page(1)
    except EmptyPage:
        dataqs = paginator.page(paginator.num_pages)

    return render(request, 'confi/pages/accounts_plan/list_accsplan.html', context={
        'accsplan': accsplan,
        'accsplanfilter': accsplanfilter,
        'dataqs': dataqs,
    })

Форма фильтра выглядит следующим образом:

class AccountsPlanFilter(django_filters.FilterSet):

    accplantype = ChoiceFilter(choices=AccountsPlan.AccPlanType.choices, field_name='accplantype',)
    code = CharFilter(field_name='code', lookup_expr='icontains',)
    name = CharFilter(field_name='name', lookup_expr='icontains',)
    active = BooleanFilter(field_name='active', widget=CustomBooleanWidget,)

    class Meta:
        model = AccountsPlan
        fields = '__all__'

Я хочу сохранить этот список отфильтрованным, пока активна сессия, даже если пользователь меняет страницы, а затем вернуться к этой, но я застрял в том, как это сделать.

Я попытался добавить оператор if в представлении следующим образом:

if form_data:
    accsplan = AccountsPlan.objects.filter(**form_data)
    accsplanfilter = AccountsPlanFilter(request.GET, queryset=accsplan)

Но я получаю эту ValidationError в списке:

ValidationError at /list_accsplan/ ["значение "['true']" должно быть True ou False."]

Я думал, что это из-за того, что я не отфильтровал поле active, но даже выбор одного поля дает мне эту ошибку. Как я могу передать эти параметры в представление и сохранить применение фильтров до тех пор, пока сессия активна? Спасибо!

Вернуться на верх