0

我有以下情况。我有 3 个模型 - 学校、用户、SchoolTeacher。教师可以是许多学校的一部分。现在,当用户搜索时,我们会根据某些标准显示学校列表。我们还想为每所学校显示用户是否是该学校的老师。现在,我想在一个查询中得到结果,所以我这样做了

users_list = list(SchoolTeacher.objects.filter(school__in = result_list, user=self.user).values('school_id'))

users_teacher_ids = []

for item in users_list :
        users_teacher_ids .append(item['school_id']) 

然后,我附加到每个 School 对象上,

schoolobj.is_user_teacher = schoolobj.id in users_teacher_ids 

我可以做一些比这更好的事情吗?

谢谢

4

1 回答 1

2

如果您的模型如下所示:

class School(models.Model):
   # -- your fields

class SchoolTeacher(models.Model):
   schools = models.ManyToManyField(School)
   # -- other fields

然后你可以这样做:

my_school = School.objects.get(pk=1)
my_school.schoolteacher_set.all() # all teachers in a particular school

有关更多信息,请参阅文档中的多对多反向关系

于 2012-05-04T11:08:35.523 回答