Как можно получить набор запросов и для каждого объекта получить его набор запросов - PullRequest
0 голосов
/ 20 апреля 2020

например, у меня есть эти модели:

class Teacher(models.Model):
    .....


class Student(models.Model):
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    .....

Теперь, если я хочу получить значения учителей, я могу сделать это с помощью: Teacher.objects.values("id", "name") но как я могу добавить набор запросов учеников в набор запросов учителей ценности?

вот ожидаемый результат как JSON:

{
  "id": 1,
  "name": "Alan",
  "students": [
    {
      "id": 1,
      "name": "John",
      "...": "...",
    },
    {
      "id": 2,
      "name": "Sam",
      "...": "...",
    },
    {....},
    {....},
  ]
}

Примечание: я знаю, что могу сделать это, получив набор запросов учащихся, но в этом случае у меня будет много дублированных учителей, поэтому Я просто хочу, чтобы каждый учитель и его ученики были массивом предметов

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Возможно, не самый лучший ответ, но вы можете использовать Serializer или ModelSerializer из django-restframework для сериализации ваших моделей до json.

0 голосов
/ 20 апреля 2020

Sudent объекты доступны с Teacher как Teacher.objects.student_set. См. https://docs.djangoproject.com/en/3.0/topics/db/queries/#following -relationships-backward .

Если вы добавите related_name="students" к Student.teacher модели

class Student(models.Model):
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name="students")

, тогда вы можете использовать Teacher.objects.students. См. https://docs.djangoproject.com/en/3.0/ref/models/fields/#django .db.models.ForeignKey.related_name .

И кстати, вы уверены, что on_delete=models.CASCADE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...