显示 Django 表单答案

Displaying Django form answers

我在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 将向 Test 发送 Answers ].

Question 对象将具有与 Test 的外键关系。 Answer 对象将与 TestStudent.

ForeignKey 关系

你现在有一整套观点要写了。将有 CreateViewUpdateView(可能还有 DeleteView)(经过验证!)教师将使用它们来为特定 Test 操作 Question 对象。 Question 的文本和选项的详细信息将显示给每个参加测试的学生;学生将回答他选择的正确答案,该答案将被记录为 Answer 对象`

student-answer 表单将只输入一个字段:学生选择的答案(A 到 D,还是 1 到 4?)学生看到的将是一个 Question 对象的显示: read-only 教师输入的问题数据视图。

很有可能,在掌握了这个窍门之后,您将引入 TeacherCourse 对象(多个 Test 对象链接到一个 Course。一个或更多 Teacher 个对象链接到一个 Course, ...)

固执己见,但这正是 Class-Based 视图使问题变得简单的问题,所以请使用它们。