django查询:如何使用模型查询API查找具有相同参数的课程
我有一节课的以下模型,我想找出每节课之前或之后(少于15分钟)都有相同语言、教室和老师的课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)
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(....))