Поиск по сайту django
На главной странице отображается таблица со всеми протоколами, необходимо сделать поиск на сайте по Наименованию задачи (task_name) и должна выводится такая же таблица как и на главной, но с задачами, которые пытаются найти. Перепробовав разные способы, пересмотрев различные видео, у меня так и не получилось это сделать.
views.py
class Search(ListView):
model = Protocol
template_name = 'protocols/index.html'
context_object_name = 'protocol'
def get_queryset(self):
return Protocol.objects.filter(task_name__iregex=self.request.GET.get('q'))
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['q'] = self.request.GET.get('q')
return context
url.py
path('search/', Search.as_view(), name='search')
форма
<form class="d-flex" data-bs-theme="light" method="GET" action="{% url 'search' %}">
<input class="form-control me-sm-2" type="text" name="q" placeholder="Поиск по таблице">
<button class="btn btn-secondary my-2 my-sm-0" type="submit">Найти</button>
</form>
таблица в index.html
<thead>
<tr>
<th scope="col">№</th>
<th scope="col">Наименование задачи</th>
<th scope="col">Дата постановки</th>
<th scope="col">Крайний срок исполнения</th>
<th scope="col">Служба/отдел/подразделение</th>
<th scope="col">Ответственные лица</th>
<th scope="col">Комментарий</th>
<th scope="col">Действия</th>
</tr>
</thead>
<tbody>
{% for protocol in protocols %}
<tr>
<td>{{ protocol.task_number }}</td>
<td>{{ protocol.task_name|truncatewords:4 }}</td>
<td>{{ protocol.date|date:"j E Y" }}</td>
<td>{{ protocol.deadline|date:"j E Y" }}</td>
<td>{{ protocol.service|truncatewords:4 }}</td>
<td>{{ protocol.face }}</td>
<td>{{ protocol.comm|truncatewords:3 }}</td>
Решился вопрос. Через shell django просмотрел как выглядит и что содержит модель, не отображалось содержимое поля task_name. Наверное глупости сделал, но удалил папку виртуальной среды, удалил миграции, заново создал виртуальную среду, миграции и поиск по нужному полю сработал :)