测验应用程序的 Django 表单(提交后如何禁用表单)

Django forms for quiz app ( how to disable a form after submission )

我正在创建一个课堂应用程序。其中有一个考试部分,学生可以在那里进行测试。如果学生想参加考试 he/she 必须 select 科目,然后必须进入考试部分。我希望学生可以访问一次考试表格。

执行此操作的一种可能性如下。请注意,还有更多选项可供您使用,哪一个是最简单的取决于您的整个应用程序。

跟踪学生的考试成绩:

class ExamResult(Model):
    student = ForeignKey(User, related_name='exam_results')
    exam = ForeignKey(Exam, related_name='exam_results')
    ...

在您的表单模板中,检查学生是否已有与考试关联的 ExamResult 对象。您可以分两部分执行此操作:

在您的上下文构建器中,为所有新考试定义一个变量。

exams_taken = ExamResult.objects.filter(student=user).values_list('exam_id', flat=True)
new_exams = Exam.objects.exclude(id__in=exams_taken)

在您的表单中,仅循环遍历 new_exams。

{% for exam in new_exams %}
    {# show the form for this exam #}
{% endfor %}