Django Как сделать чтобы пагинация и фильтрация не конфликтовали?

Я сделал фильтрацию в Django с помощью GET-запросов. К примеру, при поиске объявлений по категории и региону, ссылка будет выглядеть так "https://ru.stackoverflow.com/?category=cars&region=moscow". Но если я захочу пагинировать результаты, тогда "?page" заменит абсолютно весь путь ("https://ru.stackoverflow.com/?page=2") и выдаст вообще все объявления. Что в таком случае стоит делать? Вот код фильтрации

    def get_queryset(self):
    queryset = announcement.objects.filter(status=True)

    if self.request.GET.get("isRequest") is not None \
            and self.request.GET.get("category") is not None \
            and self.request.GET.get("region") is not None:
        queryset = announcement.objects.filter(Q(category__url=self.request.GET.get("category")),
                                                   Q(region__url=self.request.GET.get("region")),
                                                   Q(isRequest=self.request.GET.get("isRequest")))

    elif self.request.GET.get("category") is not None \
            and self.request.GET.get("region") is not None:
        queryset = announcement.objects.filter(Q(category__url=self.request.GET.get("category")),
                                                   Q(region__url=self.request.GET.get("region")))

    elif self.request.GET.get("region") is not None \
            and self.request.GET.get("isRequest") is not None:
        queryset = announcement.objects.filter(Q(isRequest=self.request.GET.get("isRequest")),
                                                   Q(region__url=self.request.GET.get("region")))

    elif self.request.GET.get("category") is not None \
            and self.request.GET.get("isRequest") is not None:
        queryset = announcement.objects.filter(Q(isRequest=self.request.GET.get("isRequest")),
                                                   Q(category__url=self.request.GET.get("category")))

    elif self.request.GET.get("region") is not None:
        queryset = announcement.objects.filter(Q(region__url=self.request.GET.get("region")))

    elif self.request.GET.get("category") is not None:
        queryset = announcement.objects.filter(Q(category__url=self.request.GET.get("category")))

    elif self.request.GET.get("isRequest") is not None:
        queryset = announcement.objects.filter(Q(isRequest=self.request.GET.get("isRequest")))

    else:
        queryset = announcement.objects.all()

    if self.request.GET.get("search") is not None:
        queryset = queryset.filter(Q(title__icontains=self.request.GET.get("search")) |
                                   Q(description__icontains=self.request.GET.get("search")))

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