Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django查询:如何使用模型查询API查找具有相同参数的课程_Django_Django Queryset - Fatal编程技术网

django查询:如何使用模型查询API查找具有相同参数的课程

django查询:如何使用模型查询API查找具有相同参数的课程,django,django-queryset,Django,Django Queryset,我有一节课的以下模型,我想找出每节课之前或之后(少于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)

我有一节课的以下模型,我想找出每节课之前或之后(少于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实现?如果是,我如何找到这些课程?

是,您可以使用
Q
,它允许您使用
创建查询

假设您手头有一个课程数据

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

当然,可以使用sfingle语句连接两个查询。您也可以像这样使用
&

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(....))

对于复杂的查找参数…

问题在于,我不希望像您这样查找特定课程的邻居,因为我希望获得满足这些条件的每一课。使用你的方法,我需要循环每节课,也就是说,在循环中相互比较每节课。你想要什么是不可能的,因为要检查你想要什么,你必须进行比较,除非你选择一个特定的项目,否则你无法进行比较。。。
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(....))