Django формы для приложения викторины (как отключить форму после отправки)

Я создаю приложение для учебного класса. В нем есть раздел экзамена, где ученики могут сдавать тесты. Если ученик хочет сдать экзамен, он/она должен выбрать предмет, а затем зайти в раздел экзамена. Я хочу, чтобы ученик имел доступ к экзаменационной форме только один раз.

Одна из возможностей сделать это заключается в следующем. Обратите внимание, что существует множество других вариантов, какой из них самый простой, зависит от всего вашего приложения.

Следите за результатами экзаменов ваших учеников:

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 %}
Вернуться на верх