2012-05-04 1 views
0

У меня есть следующие настройки моделей в Django 1.3. У меня есть Школа и Учитель со многими отношениями.Есть ли альтернатива сырому sql-запросу?

class Teacher(models.Model): 
     schools = models.ManyToManyField(School, db_table="schoolteachers", related_name='scteachers') 

Теперь у меня есть вид поиска, в котором отображается информация о школе. В настоящее время, чтобы показать учителям для каждой школы, у меня есть функция в модели школы,

def get_teachers(self): 

    return ' , '.join(school.name for school in self.scteachers.all()) 

Таким образом, если мы отображая 50 школ, мы делаем 50 запросов, которые я хочу, чтобы избежать. Я думал об использовании raw_query. Но может ли что-то еще сделать?

благодаря

ответ

1
', '.join(School.objects.filter(
    other_way_from_school_to_schoolteachers__teacher__pk=self.pk 
).values_list('name', flat=True))