Функциональные возможности поиска

django, эта функциональность поиска работает, но данные не отображаются на шаблоне. Я новичок в django. Пожалуйста, помогите мне

view.py:

def search(request):
    search_machinename = request.GET.get('q')
    if (search_machinename is not None) and search_machinename:
        machinename = Item.objects.filter(QuerySet(machinename__icontains=search_machinename) | 
        QuerySet(operationno__icontains=search_machinename))
        if not machinename:
            machinename = Item.objects.all()

    context = {'machinename': machinename}

    return render(request, 'usermaster/item-form.html', context)

Файл шаблона: item-form.html: Страница этого шаблона

<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
    {% csrf_token %}
    {{fields}}

    <input type="text" name="q" value='{{ request.GET.q }}'>
    <button type="submit">Search</button>
    <table>
        {% for data in machinename %}
        <tr>
            <td>{{ data.machine_name }}</td>
            <td>{{ data.operation_no }}</td>
        </tr>
        {% endfor %}
    </table>
</form>

код работает, но не отображается на веб-странице

Вы неправильно написали имена полей модели, operationno__icontains и machinename__icontains в Queryset или Q.
Измените их следующим образом:

# views.py
from django.shortcuts import render
from .models import Item
from django.db.models import Q

def search(request):
    search_machine_name = request.GET.get('q')
    context = {}
    if (search_machine_name is not None) and search_machine_name:
        machine_name = Item.objects.filter(Q(machine_name__icontains=search_machine_name) | 
        Q(operation_no__icontains=search_machine_name))
        if not machine_name:
            machine_name = Item.objects.all()

        context['machine_name'] = machine_name

    return render(request, 'usermaster/item-form.html', context)
# templates/usermaster/item-form.html
<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
    {% csrf_token %}
    {{fields}}

    <input type="text" name="q" value='{{ request.GET.q }}'>
    <button type="submit">Search</button>
    <table>
        {% for data in machine_name %}
        <tr>
            <td>{{ data.machine_name }}</td>
            <td>{{ data.operation_no }}</td>
        </tr>
        {% endfor %}
    </table>
</form>
Вернуться на верх