Создание нескольких записей для одной модели в модельной форме 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/