مشکل سرچ در django - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل سرچ در django

0 امتیاز

من یک 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 %}

 

سوال شده فروردین 6, 1399  بوسیله ی omidjahadi (امتیاز 9)   1 2

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...