من یک detailview دارم که اطلاعات هر agent رو برمیگردونه ... توی این اطلاعات، اطلاعات مربوط به userهای ایجاد شده توسط اون agent هم نمایش داده میشه ... حالا من میخوام توی لیست این userها سرچ کنم ... وقتی یوزری که توی دیتابیس هست رو سرچ میکنم، برنامه درست کار میکنه ... اما وقتی یک یوزر که توی دیتابیس نیست رو سرچ کنم، برنامه ارور PageNotFound میده ... به عنوان مثال، agent1 یک یوزر به اسم omid داره ... وقتی من حرف o رو سرچ کنم، omid نمایش داده میشه ... اما وقتی حرف k رو سرچ میکنم، ارور میده
models.py
class agents(models.Model):
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 %}