在主页面上,我有一个搜索表单,可以搜索该应用程序的所有数据,学生,课程,教师和用户,为此,我做到了。这很好。但是,如果学生和老师的名字相同,则可以仅给出一个学生或老师的结果。是否有其他方法仅通过一种搜索形式来搜索应用程序的学生,课程,教师和用户的所有数据。同样,此 contains方法提供区分大小写的数据。它的行为类似于确切的方法,我正在使用mysql作为数据库。
views.py
def searchall(request):
q = request.GET.get('q')
if q:
courses = Course.objects.filter(title__icontains=q)
students = Student.objects.filter(name__icontains=q)
teachers = Teacher.objects.filter(name__icontains=q)
users = User.objects.filter(username__icontains=q)
if courses:
return render(request,'students/view_course.html',{'courses':courses})
elif students:
return render(request,'students/view_students.html',{'students':students})
elif teachers:
return render(request,'students/view_teacher.html',{'teachers':teachers})
elif users:
return render(request,'students/view_users.html',{'users':users})
else:
messages.info(request, 'no results found for {}'.format(q))
return redirect('students:home')
else:
return request('students:home')
模板
<li class="search-box">
<a class="nav-link hidden-sm-down" ><i class="iconsmind-Magnifi-Glass2"></i></a>
<form class="app-search" style="display: none;" action="{% url 'students:search_all' %}">
<input type="text" name="q" class="form-control" placeholder="Search & enter"> <a class="srh-btn"><i class="ti-close"></i></a>
</form>
</li>