2

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

我将表格分为三个部分,每个部分有 3-4 个字段来搜索例如

 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") 但我不知道如何同时搜索所有

谁能告诉我如何进行

4

3 回答 3

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

于 2013-04-08T07:52:00.440 回答
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})
于 2013-04-08T07:52:51.733 回答
0

我建议你在django-haystack插件上抢购一下。它将允许您使用类似模型的对象制作扁平索引,然后在其中轻松搜索。

您始终可以使用 Q 对象和 icontains 查找,但对于相对大量的数据会很慢。

于 2013-04-08T08:12:44.677 回答