Фильтрация поиска с помощью фильтров Django, запрос удаляется - PullRequest
0 голосов
/ 07 апреля 2020

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

class PostListView(ListView):
    model = publicaciones
    template_name = 'store/search.html'
    context_object_name = 'queryset'
    ordering = ['Promocionado']
    paginate_by = 2
    def get_queryset(self):
        qs = self.model.objects.all().order_by('id')
        search = self.request.GET.get('q')
        if search:
            qs = qs.filter(Título__icontains=search)
        return qs
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        MyFilter = PubFilters(self.request.GET, queryset=self.get_queryset())
        context['filter'] = MyFilter
        context['filtered_items'] = MyFilter.qs
        context['count'] = self.get_queryset().count()
        context['búsqueda'] = self.request.GET.get('q')
        return context

Это фильтр:

import django_filters из .models import publicaciones

class PubFilters(django_filters.FilterSet):
    o = django_filters.OrderingFilter(
        fields=(
            ('Fecha', 'Más nuevo'),
        ),

    )
    class Meta:
        model = publicaciones
        fields = ['Precio', 'Categoría']

Проблема в том, что если Я ищу что-то, а затем пытаюсь применить фильтр, запрос, который я искал, удаляется и отображается как «Нет». Любая помощь будет оценена

РЕДАКТИРОВАТЬ: Это шаблон:

{% extends 'store/store.html' %}
{% load static %}
{% load crispy_forms_tags %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style_search.css' %}">
{% block content %}
<div class="container">
    <form method="GET">
        {{ filter.form|crispy }}
        <button class="btn btn-primary" type="submit">Buscar</button>
    </form>
</div>
<h3>{% if count == 0 %}
        Ningún resultado para
    {% elif count == 1 %} 
        {{ count }} resultado para
    {% else %}
        {{ count }} resultados para
    {% endif %}
        "{{ búsqueda }}"
</h3>
{% for q in filtered_items %}
    <div class="col-md-3 clearfix d-none d-md-block">
        <div class="card mb-2">
            <img class="card-img-top" src="{{ q.Fotos.url }}" width="250">
            <div class="card-body">
                <div class="card-title">
                    <h1><a href="{% url 'detail' q.pk %}">{{ q.Título }}</a></h1>
                </div>
                <div class="card-text">
                    <h5>{{ q.Precio }}$</h5>
                </div>
                <div class="card-text">
                    <h5>{{ q.Fecha }}</h5>
                </div>
            </div>
        </div>
    </div>
{% endfor %}

{% if is_paginated %}

    {% if page_obj.has_previous %}
        <a class="btn btn-outline-info mb-4" href="?page=1{% if búsqueda %}&q={{ búsqueda }}{% endif %}">Primera</a>
        <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.previous_page_number }}{% if búsqueda %}&q={{ búsqueda }}{% endif %}">Anterior</a>
    {% endif %}

    {% for num in page_obj.paginator.page_range %}
        {% if page_obj.number == num %}
            <a class="btn btn-info mb-4" href="?page={{ num }}{% if búsqueda %}&q={{ búsqueda }}{% endif %}">{{ num }}</a>
        {% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
            <a class="btn btn-outline-info mb-4" href="?page={{ num }}{% if búsqueda %}&q={{ búsqueda }}{% endif %}">{{ num }}</a>
        {% endif %}
    {% endfor %}

    {% if page_obj.has_next %}
        <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.next_page_number }}{% if búsqueda %}&q={{ búsqueda }}{% endif %}">Siguiente</a>
        <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.paginator.num_pages }}{% if búsqueda %}&q={{ búsqueda }}{% endif %}">Última</a>
    {% endif %}

{% endif %}
{% endblock content %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...