Отображение ответов в форме Django
Я не смог найти решение этой проблемы на сайте Django, в настоящее время у меня есть форма, как показано на рисунке:
В моем models.py он сохраняется следующим образом:
Я хочу использовать ответы из формы и создать новую форму, используя ответы этой формы в качестве вопросов для нее, по сути, воссоздавая эту форму и повторно используя поля, но изменяя поля и отображая их на уникальном URL
class InitialForm(forms.Form):
Teacher_Name = forms.CharField(label='Teacher Name')
Test_Name = forms.CharField(label='Label this test')
Subject = forms.CharField(label = 'Subject')
Question = forms.CharField(label = 'What is the first question?')
Topic = forms.CharField(label = 'What topic is this on?')
Option1 = forms.CharField(label = 'What is the first option?')
Option2 = forms.CharField(label = 'What is the second option?')
Option3 = forms.CharField(label = 'What is the third option?')
Option4 = forms.CharField(label = 'What is the fourth option?')
Answer = forms.CharField(label = 'Which option is the correct option?', widget=forms.Select(choices=Options))
class Questions(models.Model):
testID = AutoSlugField(unique=True)
test_label = models.CharField(max_length=1000)
teacherName = models.CharField(max_length=1000, null = True)
studentID = models.ForeignKey(Student, on_delete=models.CASCADE, null = True)
Subject = models.CharField(max_length=1000)
Q1 = models.CharField(max_length=1000, null = True)
Topic1 = models.CharField(max_length=1000)
Option1_Q1 = models.CharField(max_length=1000)
Option2_Q1 = models.CharField(max_length=1000)
Option3_Q1 = models.CharField(max_length=1000)
Option4_Q1 = models.CharField(max_length=1000)
AnswerQ1 = models.CharField(max_length=1000)
``
Вам нужно сделать шаг назад и подумать о том, какие объекты вы собираетесь хранить в своей базе данных и что вы будете с ними делать, а главное, как они связаны между собой. Правильно определить взаимосвязи как можно раньше - это самое важное, потому что потом их труднее всего изменить.
Я бы предположил, что есть что-то вроде Test, у которого есть Questions, и что каждый Student будет суммировать Answers до Test.
Question будут иметь отношение ForeignKey к объекту Test. Объекты Answer будут иметь отношение ForeignKey как к Test, так и к Student.
Теперь вам предстоит написать целый набор представлений. Это будут CreateView и UpdateView (и, возможно, DeleteView), которые (аутентифицированный!) преподаватель будет использовать для манипулирования объектами Question для конкретного Test. Текст Question и детали варианта будут показаны каждому студенту, проходящему тест; студент ответит своим выбором правильного ответа, который будет записан как объект Answer
В форму ответа ученика будет введено только одно поле: выбранный учеником ответ (от A до D, или от 1 до 4?) То, что увидит ученик, будет отображением объекта Question: представление только для чтения данных вопроса, которые были введены учителем.
Вполне возможно, что после того, как вы освоитесь, вы будете вводить Teacher и Course объекты (несколько Test объектов, связанных с одним Course. один или несколько Teacher объектов, связанных с одним Course, ...)
Оппозиционно, но это именно та проблема, которую упрощают представления на основе классов, так что используйте их.