假设我有两个不同的应用程序:
teacher/models.py:
Teacher(models.Model):
name = models.CharField(max_length=300)
class/models.py:
Class(models.Model):
name = models.CharField(max_length=300)
teacher = models.ForeignKey(Teacher)
students = models.ManyToManyField(Student)
我想让所有的老师上课,所有的课程都附设。你知道吗
我想要的结果是:
{[
teacher: '3L' #Teachers Id
classes: ['20L','14L','30L'] #list of Class objects or ids with the above teacher
],
[# similar to above]
}
这有可能吗?这就是我目前正在做的:
classes = Class.objects.all()
teachers = Teacher.objects.filter(id__in=classes.value_list('teacher',flat=True).distinct())
for teacher in teachers:
classes_for_teachers = classes.objects.filter(teacher=teacher)
在上面的代码中,有四个使用循环进行的查询,这无疑增加了时间复杂性。有更好的解决办法吗?提前谢谢。你知道吗
使用^{} :
不管有多少教师和班级,这只会触发2db查询。你知道吗
相关问题 更多 >
编程相关推荐