测验应用程序的 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 %}
我正在创建一个课堂应用程序。其中有一个考试部分,学生可以在那里进行测试。如果学生想参加考试 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 %}