Как отображать результаты на основе того, что ищет пользователь django

У меня есть веб-страница, которая показывает детали из базы данных, у меня есть строка поиска, которая будет искать только на основе номера приема и номера детали, но всякий раз, когда я ввожу детали, она не отображает строку с деталями в виде таблицы. Пример показан ниже:

Как видно из URL, ему удается показать поиск=номер приема, но таблица все равно показывает все данные из базы данных, вместо того, чтобы просто показать всю строку данных, которые пользователь ищет по номеру приема. Как заставить его отображать данные, которые пользователь ищет по номеру приема и номеру детали в виде таблицы?

enter image description here

views.py

@login_required(login_url='login')
def gallery(request):
    search_post = request.GET.get('reception')
    search_partno = request.GET.get('partno')

    if search_post:
        allusername = Photo.objects.filter(Q(reception__icontains=search_post) & Q(partno__icontains=search_partno))
    else:
        allusername = Photo.objects.all().order_by("-Datetime")

    context = {'allusername': allusername}

    return render(request, 'photos/gallery.html', context)

gallery.html

{% endblock %}

попробуйте что-то вроде этого.
в вашем шаблоне измените это:

 <form class="form-inline my-2 my-lg-0" action="{% url 'gallery' %}">
        <input class="form-control mr-sm-2" type="search"   placeholder="Search" aria-label="Search" name="search">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>

to

<form class="form-inline my-2 my-lg-0" action="{% url 'gallery' %}" method='GET' value='{{ request.GET.q }}'>
   <input class="form-control mr-sm-2" type="text"   placeholder="Search" aria-label="Search" name="q" value='{{ request.GET.q }}'/>
  <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>

измените ваш views.py следующим образом.

@login_required(login_url='login')
def gallery(request):
    search_post = request.GET.get('q')
    if (search_post is not None) and search_post:
        allusername = Photo.objects.filter(Q(reception__icontains=search_post) | Q(partno__icontains=search_post))
        if not allusername:
            allusername = Photo.objects.all().order_by("-Datetime")
    else:
        allusername = Photo.objects.all().order_by("-Datetime")

    context = {'allusername': allusername}

    return render(request, 'photos/gallery.html', context)
Вернуться на верх