Я хотел бы создать динамическую форму с использованием forms.py, где вопросы и ответы поступают из значений в столбцах моделей.
У меня есть три модели, одна называется Листом, в которой содержится много вопросов из модели Вопросов (от многих ко многим). Модель Вопрос может содержать один или несколько ответов из модели Ответ (от многих к многим)
В моем views.py моя функция извлекает все значения из модели листа и отправляет значения в мой HTML-файл.
В моем html-файле есть код, который позволяет отображать все вопросы с ответами.
class Sheet(models.Model):
form = models.ForeignKey(Form, on_delete=models.CASCADE)
question = models.ManyToManyField(Question, blank=True)
sheet_name = models.CharField(max_length=256)
creation_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.sheet_name
class Question(models.Model):
is_parent = models.ManyToManyField("self", blank=True)
answer = models.ManyToManyField(Answer, blank=True)
in_french = models.TextField(max_length=512)
in_english = models.TextField(max_length=512)
def __str__(self):
return self.in_french
class Answer(models.Model):
in_french = models.CharField(max_length=32)
in_english = models.CharField(max_length=32)
def __str__(self):
return self.in_french
{% for a_sheet in all_sheets %}
<b>Survey: {{ a_sheet.sheet_name}}</b>
{% for q in a_sheet.question.all %}
<label>Question: {{ q.in_english }}</label><br/>
<label>Answers:</label>
{% if q.answer.all %}
<select>
{% for a in q.answer.all %}
<option value={{ a.id }}> {{ a.in_french }} </option>
{% endfor %}
</select>
{% else%}
<input type="text" name="answer">
{% endif %}
{% endfor %}
{% endfor %}
Мой вопрос заключается в том, как перевести мой HTML-код, чтобы поместить его в мой файл forms.py. Помещение кода в функцию моего файла forms.py позволило бы мне установить условия и получить результаты моей формы, чтобы поместить их в другую модель. Эта проблема не может быть решена по умолчанию с помощью forms.ModelForm, который отображает столбцы модели в формах.
Большое спасибо за вашу помощь