我正在使用django作为我的应用程序。我是新手。 我的表单中有多个字段,用户可以从中执行搜索 我有像学生有很多科目的关系层次,然后科目有很多作业,而且作业有很多形式
我将表格分成三个部分,每个部分有3-4个字段来搜索e,g
STUDENT DATA
Name:
StudentID
city
SUBJECTS DATA
Start daTE
NAME
CREDITS
ASSIGNEMENT DATA
marks
date_issue
credits
我将根据这些seacrh标准返回学生名单,他们将是部分匹配。
我是django si的新手,我不知道如何继续过滤搜索,因为搜索也是嵌套的objcets
我可以执行一个列搜索,如
Student.objects.filter(sbjects__icontains="math")
但我不知道如何同时搜索所有
任何人都可以告诉我如何继续
答案 0 :(得分:1)
所以看来你正在寻找OR
查询?这样的事情:
from django.db.models import Q
Student.objects.filter( Q(subjects__icontains="math") | Q(name="John") )
文档:
https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects
答案 1 :(得分:1)
def your_view(request):
students = Student.objects.filter()
if request.GET.get('student'):
students = students.filter(
Q(name__contains=request.GET['student']) |
Q(studentID__contains=request.GET['student']) |
Q(city__contains=request.GET['student'])
)
if request.GET.get('subjects'):
students = students.filter(
Q(name__contains=request.GET['subjects']) |
Q(credits__contains=request.GET['subjects'])
)
//more search here
return render(request, 'page.html', {'students': students})
答案 2 :(得分:0)
我建议你在django-haystack插件上抓一个战利品。它允许您使用类似模型的对象制作扁平索引,然后在其中进行搜索。
您可以随时使用Q对象和icontains查找,但对于相对大量的数据来说速度会很慢。