Функциональные возможности поиска
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>