Как выбрать объекты модели, связанные с моей моделью - PullRequest
1 голос
/ 05 июля 2019

Я создаю систему фильтрации для своего приложения, и я хотел бы визуализировать <select> поля, предварительно заполненные возможными опциями.

Предположим, у меня есть модель с именем Exam, которая имеет отношение к Student, и имеет отношение к StudentProfile - я фильтрую Exam объекты по полю has_scholarship в профиле студента, поэтому яЯ создаю запрос, такой как: student__student_profile_has_scholarship и передаю его в функцию filter () django, и он работает.

Теперь, однако, я хотел бы отобразить html-форму со всеми возможными <option> s,Для этого мне нужно найти упомянутые возможные варианты. Как найти все объекты из такой строки запроса, как указано выше, чтобы получить все объекты student__student_profile из моей Exam модели? Это также должно работать независимо от того, как долго цепочка отношений предполагаетотношения все правильные.

1 Ответ

0 голосов
/ 05 июля 2019

Я предполагаю, что есть модели:

class Exam(models.Model):
    example = models.CharField(max_length=255, default="")


class Stydent(models.Model):
    exam = models.ManyToManyField(Exam, related_name="students")


class StydentProfile(models.Model):
    stud = models.ForeignKey(Stydent, related_name="profiles",
                             on_delete=models.SET_NULL, default=None, null=True)

Если это так: получить всех студентов или профили от exam:

In [27]: exam
Out[26]: <Exam: Exam object (1)>

In [27]: exam.students.all()
Out[28]: <QuerySet [<Stydent: Stydent object (1)>]>

In [29]: exam.students.model.objects.all()
Out[29]: <QuerySet [<Stydent: Stydent object (1)>, <Stydent: Stydent object (2)>]>

In [30]: exam.students.model.profiles.field.model.objects.all()
Out[30]: <QuerySet [<StydentProfile: StydentProfile object (2)>, <StydentProfile: StydentProfile object (1)>]>
...