Правильный способ доступа к вложенным объектам посторонних ключей? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть модели с иерархическими отношениями:

class School(models.Model):
    name = models.CharField()

class Class(models.Model):
    school = models.ForeignKey(School)

class Student(models.Model):
    class = models.ForeignKey(Class)

И я бы хотел получить каждые Student объекты, связанные с определенным School.
. Обычно я делал это, как показано ниже:

the_school = School.objects.get(name='Springfield Elementary School')
students = Student.objects.filter(class__school=the_school)

Но для этого метода нужны две модели для поиска (School и Student), что кажется несколько ненужным ... Для меня.
Поэтому я попытался сделать однострочный запрос, используя Django'sвстроенный связанный менеджер:

students = School.objects.get(name='...').class_set.student_set.all()
# or 
students = School.objects.get(name='...').class_set.all().student_set.all()

... который не работал.

Как мне сделать запрос, ссылающийся на данный School объект?
Или естьлучшее решение?

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете использовать class__school__name в качестве аргумента фильтра:

students = Student.objects.filter(class__school__name='Springfield Elementary School''Springfield Elementary School')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...