Django - как передавать данные экземпляра объекта из одного представления в другое

Итак, я делаю цифровой школьный регистр в качестве проекта портфолио.

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

views.py

    @login_required
    def class_detail(request):
        school_class = get_object_or_404(SchoolClass, id=1)
        semesters = school_class.school_year.semester_set.all()
        students = school_class.students.all()
        grades_1_sem = []
        grades_2_sem = []
        subject = Subject.objects.get(id=1)
    
        for student in students:
            grades_1_sem.append(student.grade_set.filter(school_year=school_class.school_year, semester=Semester.objects.get(number=1)))
            grades_2_sem.append(student.grade_set.filter(school_year=school_class.school_year, semester=Semester.objects.get(number=2)))
    
        students_grades_1_sem = list(zip(students, grades_1_sem))
        students_grades_2_sem = list(zip(students, grades_2_sem))
    
        return render(request, 'schoolregister/nauczyciel/klasa.html', {
            'school_class': school_class, 'students': students, 
            'grades': grades, 'subject': subject,
            'students_grades_1_sem': students_grades_1_sem,
            'students_grades_2_sem': students_grades_2_sem,
            })
    
    
    def edit_grade(request):
        if request.method == 'POST':
            grade_to_edit = GradeToEdit(request.POST)
            if grade_to_edit.is_valid():
                grade_to_edit.save()
                return HttpResponseRedirect('')
            else:
                return HttpResponse("Error.")
        else:
            grade_to_edit = GradeToEdit()

        return render(request, 'schoolregister/edit_grade.html', {'grade_to_edit': grade_to_edit,})

forms.py

class GradeToEdit(forms.ModelForm):
    class Meta:
        model = Grade
        fields = ('grade', 'school_year', 'semester', 'subject', 'student', 'description')

urls.py

urlpatterns = [
    path('nauczyciel/<int:school_class_id>/<int:subject_id>/', views.class_detail,
    name='class_detail'),  
    path('edit_grade/', views.edit_grade, name='edit_grade'),
]

Вот код с тегом href, который должен перейти к следующему представлению и передать данные, но он не передает данные для экземпляра Grade:

klasa.html

{% for semester in semesters %}
    {% if semester.number == 1 %}
        {% for student in students_grades_1_sem %}
            <tr>
                <td>{{ student.0 }}</td>
                    {% for grade in student.1 %}
                        <td><a href="{% url 'schoolregister:edit_grade' %}" value="{{ grade }}">{{ grade }}</a><br>
                            {{ grade.description }}<br>
                        </td>
                    {% endfor %}

Вместо заполненной формы - полностью пустая:

edit_grade.html

<form method="post">
    {{ grade_to_edit.as_p }}
    {% csrf_token %}
    <p><input type="submit" value="Dodaj"></p>
</form>

Любые предложения будут полезны, спасибо!

Вернуться на верх