我在我的应用程序中使用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的新手,我不知道如何继续过滤搜索,因为搜索也是在嵌套对象集上进行的
我可以像这样执行单列搜索
Student.objects.filter(sbjects__icontains="math"),但我不知道如何同时搜索所有
有没有人能告诉我该怎么做
发布于 2013-04-08 15:52:52
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})发布于 2013-04-08 15:52:00
所以看起来你是在寻找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
发布于 2013-04-08 16:12:45
我建议你在django-haystack插件上试试。它将允许您使用类似模型的对象创建扁平化的索引,然后非常容易地在其中进行搜索。
你总是可以使用Q对象和图标查找,但对于相对较大的数据量来说,它会很慢。
https://stackoverflow.com/questions/15873762
复制相似问题