Я создаю приложение базы данных домашних заданий, которое сделает ответ, оценку и исправление домашних заданий проще, чем сейчас.
Для этого у меня есть формы для студентов, чтобы заполнить ответ на заданный им вопрос, затем этот вопрос помечается как готовый для оценки, и тогда учитель может видеть все вопросы, которые готовы оценивать по заданию.
Проблема, с которой я сталкиваюсь, заключается в вставке поля формы в каждый ответ, где можно дать отзыв; Я полагаю, что самым простым способом было бы загрузить один вопрос и его ответ на страницу и иметь там поле формы обратной связи, но я хотел бы перебрать все вопросы, на которые даны ответы в заданном задании, и отобразить их все на одной странице, чтобы их можно было быстро оценить.
Я попытался вставить только поле формы в цикл for, но добился определенного успеха, но при отправке я не могу вытащить идентификатор вопроса из цикла, чтобы заполнить (обязательный) внешний ключ, указывающий из обратной связи. Модель на оригинальный вопрос-ответ.
Я поиграл с несколькими формами на странице, я попытался создать ответ и ответ типа форума, я попытался получить исходный идентификатор ответа из цикла for и отправить его обратно в форму, но я начинаю задумываться, а не вижу ли я чего-то простого, что происходит за кулисами и мешающего ему работать.
@login_required
@teacher_required
def list_ungraded_assignment_questions_by_scheduled_assignment(request, scheduled_assignment):
need_to_be_evaluated_student_assignment_questions = StudentAssignmentQuestion.objects.filter(student_scheduled_class_assignment=scheduled_assignment).filter(needs_to_be_reviewed_by_teacher=True)
need_to_be_evaluated_student_assignment_question_ids = []
for assignment_question in need_to_be_evaluated_student_assignment_questions:
need_to_be_evaluated_student_assignment_question_ids.append(assignment_question.id)
student_assignment_question_answers = StudentAssignmentQuestionAnswer.objects.filter(student_assignment_question__in=need_to_be_evaluated_student_assignment_question_ids)
context = {"need_to_be_evaluated_student_assignment_questions": need_to_be_evaluated_student_assignment_questions, "student_assignment_question_answers": student_assignment_question_answers}
return render(request, "accelegraded/list_ungraded_assignment_questions_by_scheduled_assignment.html", context)
{% for student_assignment_question_answer in student_assignment_question_answers %}
{% if student_assignment_question_answer.student_assignment_question.id == need_to_be_evaluated_student_assignment_question.id %}
<h6 style="background-color:DodgerBlue;">ANSWER: {{ student_assignment_question_answer }}</h6>
<h6 style="background-color:DodgerBlue;" ALIGN=RIGHT>Answered On: {{ student_assignment_question_answer.date_created }}</a></h6>
{% for student_assignment_question_answer_evaluation in student_assignment_question_answer_evaluations %}
{% if student_assignment_question_answer_evaluation.student_assignment_question_answer.id == student_assignment_question_answer.id %}
<h6 style="background-color:LightGreen;">RESPONSE: {{ student_assignment_question_answer_evaluation }}</h6>
<h6 style="background-color:LightGreen;">BY: {{ student_assignment_question_answer_evaluation.answer_evaluation_by }}</h6>
<h6 style="background-color:LightGreen;">AT: {{ student_assignment_question_answer_evaluation.answer_evaluation_by }}</h6>
{% endif %}
{% endfor %}
<div>
<a class="btn btn-success btn-sm mt-1 mb-1" href="#">Correct</a>
<a class="btn btn-info btn-sm mt-1 mb-1" href="#">Partial</a>
<a class="btn btn-danger btn-sm mt-1 mb-1" href="#">Incorrect</a>
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Teacher Response</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Submit</button>
</div>
</form>
</div>
</div>
{% endif %}
{% endfor %}
Ошибка, которую я получаю, когда пытаюсь сохранить входные данные в форме, заключается в том, что значение вопроса-ответа по умолчанию не возвращается, и я понятия не имею, как вернуть его обратно в форму для заполнения модели.