Набор запросов теряется при изменении страницы в Django

Я создал систему поиска для моих объектов под названием Property и она фильтрует и ищет по моим объектам хорошо на первой странице, но когда я меняю пагинацию или упорядочивание или меняю страницу все фильтры пропадают и она отправляет все объекты в шаблон есть ли способ исправить это? вот мой код

views.py

class SearchView(ListView):
    model = Property
    template_name = 'property/properties-list.html'
    context_object_name = 'properties'
    ordering = '-pub_date'
    paginate_by = 8

def get_context_data(self, *args, **kwargs):
    context = super(SearchView, self).get_context_data(*args, **kwargs)
    """somthing"""
    return context

def get_paginate_by(self, queryset):
    if self.request.GET.get("paginate_by") == "":
        return self.paginate_by
    return self.request.GET.get("paginate_by", self.paginate_by)
       
def get_ordering(self):
    ordering = super(SearchView, self).get_ordering()
    if self.request.GET.get('sort_by') == "Name":
        return ('-title')
    elif self.request.GET.get('sort_by') == "Price":
        return ('-price')
    elif self.request.GET.get('sort_by') == "Date":
        return ('-pub_date')
    else:
        return self.ordering

def get_queryset(self):
    location = self.request.GET.get('location')
    category = self.request.GET.get('category')
    look_for = self.request.GET.get('look_for')
    if location or category or look_for:
        if look_for == '' and category == '':
            queryset = Property.objects.filter(Q(city__icontains = location))
        elif look_for == '':
            queryset = Property.objects.filter(Q(city__icontains = location) & Q(category__slug = category))
        elif category == '':
            queryset = Property.objects.filter(Q(city__icontains = location) & Q(property_status = look_for))
        else:
            queryset = Property.objects.filter(Q(city__icontains = location) & Q(category__slug = category) & Q(property_status = look_for))
    else:
        queryset = Property.objects.all()
    return queryset

Очевидно, что я новичок в Django, если у вас есть какие-либо рекомендации по улучшению моего кода, я буду рад их услышать.

<a href="?page={{ page_obj.next_page_number }}" aria-label="Next">

Помните, что HTTP не имеет статического характера. Он не отслеживает автоматически параметры сортировки или фильтрации. Здесь вы включаете page только в параметры запроса, поэтому это единственный вариант, который становится известен, когда пользователь нажимает кнопку "следующий". Одним из решений для поддержания порядка фильтрации или сортировки является включение соответствующих параметров запроса в href всех тегов <a>.

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