如何从Django查询中过滤列表?

时间:2012-05-04 09:17:29

标签: django django-queryset

我有以下情况。我有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']) 

然后,我附上每个学校对象,

schoolobj.is_user_teacher = schoolobj.id in users_teacher_ids 

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

感谢

1 个答案:

答案 0 :(得分: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

有关详细信息,请参阅文档中的many to many reverse relationships

相关问题