2

アプリケーションにdjangoを使用しています。私はそれに慣れていません。ユーザーが検索を実行できる複数のフィールドがあるフォームがあります。学生には多くの科目があり、科目には多くの課題があり、課題には多くのフォームがあります

フォームを 3 つのセクションに分割しました。各セクションには、検索する 3 ~ 4 つのフィールドがあります。

 STUDENT DATA
  Name:
  StudentID
  city

  SUBJECTS DATA
  Start daTE
  NAME
  CREDITS

  ASSIGNEMENT DATA
  marks
  date_issue
  credits

これらの検索基準に基づいて学生のリストを返しますが、それらは部分一致になります。

私はdjango siを初めて使用します。検索はネストされたオブジェクトでも行われるため、検索のフィルタリングをどのように進めることができるかわかりません

次のように1列検索を実行できます

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 オブジェクトとアイコンのルックアップはいつでも実行できますが、比較的大量のデータの場合は遅くなります。

于 2013-04-08T08:12:44.677 に答える