Django динамические вложенные формы моделей

Предположим, у меня есть следующие модели, где существует отношение 1:много от Teacher к Course, а от Course к Student:

class Teacher(Model):
    name = CharField(max_length=64)
    degree = CharField(max_length=64)

class Course(Model):
    title = CharField(max_length=64)
    level = CharField(max_length=64)
    teacher = ForeignKey(Teacher, on_delete=CASCADE)

class Student(Model):
    name = CharField(max_length=64)
    year = CharField(max_length=64)
    course = ForeignKey(Course, on_delete=CASCADE)

Если я хочу иметь страницу "Регистрация учителя", где пользователь может ввести данные Teacher, а также добавить любое количество Course с соответствующими данными, и к каждому Course добавить любое количество Student, как это можно сделать? Я знаю о ModelForms, что сделает создание базовой формы для одного экземпляра модели довольно тривиальным, но как я могу создать форму или формы, которые по существу вложат модели друг в друга и позволят динамическое количество Course и Student?

Например, внутри формы Teacher есть кнопка "добавить курс", которая добавляет еще одну форму Course под эту форму Teacher, так что все введенные в нее данные заполняют форму Course, принадлежащую этой форме Teacher, а затем для каждой формы Course есть кнопка "добавить студента", которая добавляет форму Student для Student, принадлежащую этому Course. Как я могу реализовать это динамическое и вложенное поведение?

Тогда, если возможно сделать такую форму, обратно на стороне Python после отправки формы, как будут организованы данные? Или другими словами, что будет указывать, к какому Course относится каждый Student?

Вам стоит посмотреть на Django ModelFormsets, он используется в таких случаях

Вернуться на верх