首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django中编写自定义搜索的最佳方式是什么

在django中编写自定义搜索的最佳方式是什么
EN

Stack Overflow用户
提问于 2013-04-08 15:40:36
回答 3查看 68关注 0票数 2

我在我的应用程序中使用django。我是个新手。我有一个表单,其中有多个字段,用户可以从其中执行搜索。我有关系层次结构,比如学生有很多科目,然后科目有很多作业,分配有很多表格

我已经将表单分成三个部分,每个部分有3-4个字段来搜索e,g

代码语言:javascript
复制
 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"),但我不知道如何同时搜索所有

有没有人能告诉我该怎么做

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-08 15:52:52

代码语言:javascript
复制
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})
票数 1
EN

Stack Overflow用户

发布于 2013-04-08 15:52:00

所以看起来你是在寻找OR查询?大概是这样的:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-04-08 16:12:45

我建议你在django-haystack插件上试试。它将允许您使用类似模型的对象创建扁平化的索引,然后非常容易地在其中进行搜索。

你总是可以使用Q对象和图标查找,但对于相对较大的数据量来说,它会很慢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15873762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档