Я хочу искать в ManyToManyField в DetailView. Он отлично работает, если пользователь с таким же запросом существует, но если его нет, я получаю страницу не найдена.
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)
users = models.ManyToManyField(user_models.users, through='user_agent')
views.py :
class AgentDetailView(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()
agent_detail. html:
<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 user for this agent in database.</p>
{% endif %}