2012-05-04 6 views
0

私は以下のような状況があります。私は3つのモデルを持っています - 学校、ユーザー、SchoolTeacher。教師は多くの学校に参加することができます。今、ユーザーが検索すると、いくつかの基準に基づいて学校のリストが表示されます。また、各学校について、その学校の教師であるかどうかを表示したいと考えています。今、私は1つのクエリで結果を取得したいので、私は、私はDjangoクエリからリストをフィルタリングする方法は?

schoolobj.is_user_teacher = schoolobj.id in users_teacher_ids 

が、私はこれよりも良い何かを行うことができ、各学校のオブジェクトに添付し、この

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']) 

を行われていますか?お使いのモデルがこのように見れば

おかげ

答えて

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を参照してください。

関連する問題