0

次のシナリオがあります。私には3つのモデルがあります-School、User、SchoolTeacher。教師は多くの学校に所属することができます。現在、ユーザーが検索すると、いくつかの基準に基づいて学校のリストが表示されます。また、ユーザーがその学校の教師であるかどうかを、学校ごとに表示したいと思います。今、私は1つのクエリで結果を取得したいので、これを実行しました

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 に答える