0

私は以下のレッスンモデルを持っており、同じ言語、部屋、講師のレッスンが先行または後続する (15 分未満の) すべてのレッスンを検索したいと考えています。

class Lesson(models.Model):
      room = models.ForeignKey(Room, null=True, blank = True)
      language = models.ForeignKey(Lnaguage)
      teacher = models.ForeignKey(Teacher, null=True, blank = True)
      start = models.TimeField()
      end = models.TimeField()
      date = models.DateField()

これは、django のモデル クエリ API を使用して可能ですか? はいの場合、どうすればこれらの教訓を見つけることができますか?

4

1 に答える 1

0

はい、使用できます。これにより、およびでQクエリを作成できますANDOR

授業データが手元にあるとします。

lesson = Lesson.objects.get(id=......)

よりも

from django.db.models. import Q
from datetime import timedelta

filtered_lessons = Lesson.objects.filter( (Q(start__lt=lesson.end+timedelta(minutes=15)) | Q(end__gt=lesson.start-timedelta(minutes=15)))) # define time criteria using OR

filtered_lessons.filter(date=lesson.date, room=lesson.room, teacher=lesson.teacher, language=lesson.language) #apply the other filters

もちろん、sfingle ステートメントを使用して 2 つのクエリを結合することもできます。&また、次のように使用できます

filtered_lessons = Lesson.objects.filter( Q(Q(start__lt=lesson.end+timedelta(minutes=15)) | Q(end__gt=lesson.start-timedelta(minutes=15))) & Q(teaher=lesson.teacher) &Q(....) & Q(....))

複雑な検索パラメーターのドキュメントは次のとおりです...

于 2012-06-16T15:27:47.043 に答える