Я хочу внедрить форму поиска в мой шаблон. Шаблон для DetailView, который показывает детали «агентов». Проблема заключается в том, что при поиске имени, которого нет в базе данных, я получаю эту ошибку:
Страница не найдена ... Не найдено агентов, соответствующих запросу views.py:
class AgentsDetailView(LoginRequiredMixin, generic.DetailView):
model = models.agents
template_name = 'agent/agent_detail.html'
def get_queryset(self):
query = self.request.GET.get('q')
if query:
return models.agents.objects.filter(Q(users__user__first_name__contains=query)
| Q(users__user__last_name__contains=query)
| Q(users__id_number__contains=query)
| Q(users__mobile__contains=query))
else:
return models.agents.objects.all()
models.py:
class agents(models.Model):
agent_type = models.ForeignKey(types, on_delete=models.SET_NULL, blank=True, null=True)
name = models.CharField(max_length=100)
address = models.TextField(blank=True, null=True)
phone = models.CharField(max_length=20)
is_producer = models.BooleanField(default=False)
serial = models.TextField(default='')
users = models.ManyToManyField(user_models.users, through='user_agent')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('agent_detail', args=[str(self.id)])
agent_detail. html:
{% block content %}
<h1>name: {{ agents.name }}</h1>
<form method="GET" action="" id="searchform">
<input class="searchfield" id="searchbox" name="q" type="text" placeholder="Search..."/>
<button name="search" type="submit" value="{{ request.GET.q }}">Search</button>
</form>
{% if agents.users %}
<p><strong>Users:</strong>
<br>
{% for users in agents.users.all %}
<li>{{ users }}</li>
<hr>
{% endfor %}
</p>
{% else %}
<p>There are no agent in database.</p>
{% endif %}
<p><strong>Serial:</strong> {{ agents.serial }}</p>
<p><strong>Agent Type:</strong> {{ agents.agent_type }}</p>
<p><strong>Address:</strong> {{ agents.address }}</p>
<p><strong>Phone Number:</strong> {{ agents.phone }}</p>
<p><strong>Is Producer?:</strong> {{ agents.is_producer }}</p>
{% endblock %}