Пагинация продолжает показывать следующую страницу, когда отфильтрованные данные не достигли минимального значения paginate_by

Мое первое приложение получает запрос от моего второго приложения с помощью requests.get, пагинация работает нормально, когда я показываю все данные, но когда я использую фильтр, пагинация продолжает отображаться, даже когда недостаточно данных для пагинации

первое приложение views.py :

class Index(LoginRequiredMixin, ListView):
    model = Transaction
    template_name = 'transaction/transaction-list.html'
    paginate_by = 10

    def get_context_data(self, **kwargs):
        context = super(Index, self).get_context_data(**kwargs)
        status = self.request.GET.get("q", "all")

        if status != "all":
            get_data = requests.get(url).json()
            transaction_list = get_data["data"]
            context['transaction'] = transaction_list
            p = Paginator(context['transaction'], self.paginate_by)
            context['transaction'] = p.page(context['page_obj'].number)
            context['query'] = 'q='+status
       else:
            url = 'http://127.0.0.1:8005/api/transaction/'
            get_data = requests.get(url).json()
            transaction_list = get_data["data"]
            context['transaction'] = transaction_list
            p = Paginator(context['transaction'], self.paginate_by)
            context['transaction'] = p.page(context['page_obj'].number)
       return context

второе приложение views.py:

def get(self, request, id=None, query=None):
      if query == 'Success' or query == 'Failed' or query == 'Approval' or query == 'Rejected' or query == 'Cancelled':
            items = Transaction.objects.filter(status__icontains=query)
            serializer = TransactionSerializer(items, many=True)
            return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

      else:
          if id:
              item = Transaction.objects.get(transaction_id=id)
              serializer = TransactionSerializer(item)
              return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

          items = Transaction.objects.all()
          counts = self.fetch_count_data()
          serializer = TransactionSerializer(items, many=True)
          return Response({"status": "success", "data": serializer.data, "counts":counts}, status=status.HTTP_200_OK)

pagination html :

<nav class="pagination">
    <ul>
        {% if not page_obj.has_previous %}
        <li>
            <a href="#" class="btn btn--secondary btn--icon btn--disabled">
                
            </a>
        </li>
        {% elif page_obj.previous_page_number == 1 %}
        <li>
            <a href="?{{ query }}&page=1" class="btn btn--secondary btn--icon">
                
            </a>
        </li>
        {% else %}
        <li>
            <a href="?{{ query }}&page={{ page_obj.previous_page_number }}" class="btn btn--secondary btn--icon">
                
            </a>
        </li>
        {% endif %}

        {% for num in page_obj.paginator.page_range %}

          {% if num == page_obj.number %}
          <li><a href="#" class="btn btn--primary btn--icon btn--disabled">{{ num }}</a></li>
          {% else %}
            {% if num == 1 %}
            <li><a href="?{{ query }}&page=1" class="btn btn--secondary btn--icon">{{ num }}</a></li>
            {% else %}
              {% if num|add:"-3" <= page_obj.number and page_obj.number <= num|add:"3" %}
              <li><a href="?{{ query }}&page={{ num }}" class="btn btn--secondary btn--icon ">{{ num }}</a></li>
              {% elif num|divisibleby:"50" or num == page_obj.paginator.num_pages %}
              <li><a href="?{{ query }}&page={{ num }}" class="btn btn--secondary btn--icon ">{{ num }}</a></li>
              {% endif %}
            {% endif %}
          {% endif %}

        {% endfor %}

        {% if not page_obj.has_next %}
        <li>
            <a href="#" class="btn btn--secondary btn--icon btn--disabled">
                
            </a>
        </li>
        {% else %}
        <li>
            <a href="?{{ query }}&page={{ page_obj.next_page_number }}" class="btn btn--secondary btn--icon">
                
            </a>
        </li>
        {% endif %}
    </ul>
</nav>

Допустим, у меня есть 3 страницы, когда я показываю все данные, но когда я фильтрую по статусу успеха, есть только 2 данных со статусом успеха, но список продолжает показывать 3 страницы, когда я нажимаю на 2-ю и 3-ю страницу, возникает ошибка "нет данных"

Почему это происходит? Что нужно сделать, чтобы скрыть пагинацию, когда недостаточно данных для пагинации?

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