Создание нескольких записей для одной модели в модельной форме Django

Простите, если название смущает, я не могу придумать, как еще это сформулировать.

Я создаю сайт, на котором есть много викторин. Каждая Quiz модель

class Quiz(models.Model):
    
    name = models.CharField(max_length = 80)
    description = models.CharField(max_length = 300)
    num_questions = models.IntegerField(default = 10)
    slug = models.SlugField(max_length = 20)
    img = models.URLField(blank = True) # allow it to be none

    def __str__(self):
        return self.name

    def get_questions(self):
        return self.question_set.all()

выглядит вот так... и имеет некоторые атрибуты, такие как имя, описание и т.д. Существует множество Question моделей, которые имеют ForeignKey к одной Quiz:

class Question(models.Model):

    quiz = models.ForeignKey(Quiz, on_delete = models.CASCADE)
    img = models.URLField(blank = True) # allow none`
    content = models.CharField(max_length = 200)

    def __str__(self):
        return self.content
    
    def get_answers(self):
        return self.answer_set.all()

и затем есть некоторые Choice модели, которые имеют ForeignKey к одному Question:

class Choice(models.Model):

    question = models.ForeignKey(Question, on_delete = models.CASCADE)

    content = models.CharField(max_length = 200)
    correct = models.BooleanField(default = False)

Теперь. Я хочу создать один единственный ModelForm, из которого я могу создать 1 запись викторины, а затем 10 записей вопросов с 4 записями выбора на вопрос. Было бы очень хорошо, если бы они могли автоматически устанавливать свой внешний ключ на создаваемый вопрос. Как я могу это сделать? Возможно ли это вообще? Я даже не знаю, имеет ли смысл моя формулировка этого вопроса, потому что у меня в голове есть большая идея, но я не знаю, как правильно выразить ее в словах или коде.

Помощь приветствуется :)

Если у вас есть 3 модели и вы хотите показать их в одной форме в вашем HTML-файле. Тогда вы можете просто создать форму модели для каждой из них и добавить их в один тег <form>.

Ответ на аналогичный вопрос размещен здесь .

Если вы имеете в виду вставку нескольких записей одновременно, то рассмотрите фабрику наборов форм - https://docs.djangoproject.com/en/3.2/topics/forms/formsets/

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