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 %}