POST-данные формы «Оценки и посещаемость» не сохраняются в базе данных

В настоящее время я работаю над проектом, в котором мне нужно вводить оценки и посещаемость студентов с помощью Django. У меня есть формы для оценок и посещаемости, но когда я попытался отправить их, они не отобразились в их конкретных таблицах (Оценки) и (Посещаемость). Кто-нибудь может мне помочь?

Вот мой views.py для обоих вариантов:

 @login_required
    def mark_attendance(request):
        students = Student.objects.all()
        if request.method == 'POST':
            form = AttendanceForm(request.POST)
            if form.is_valid():
                form.save()
                return redirect('attendance')
        else:
            form = AttendanceForm()
        return render(request, 'mark_attendance.html', {'form': form, 'students': students})
    
    @login_required
    def input_grades(request):
        students = Student.objects.all()
        subjects = Subject.objects.all()
        form = GradesForm()
        if request.method == 'POST':
            form = GradesForm(request.POST)
            if form.is_valid():
                form.save()
                return redirect('grades')
            else:
                print(form.errors)  # This will print errors in the console
        return render(request, 'input_grades.html', {'form': form, 'students': students, 'subjects': subjects})

Вот мой файл forms.py для обоих вариантов:

# Attendance Form
class AttendanceForm(forms.ModelForm):
        class Meta:
            model = Attendance
            fields = ['student', 'date', 'is_present']
            widgets = {
                'date': forms.DateInput(attrs={'type': 'date'}),
            }

# Grades Form
class GradesForm(forms.ModelForm):
    class Meta:
        model = Grades
        fields = ['student', 'subject', 'quarter', 'grade']
        widgets = {
            'grade': forms.TextInput(attrs={'class': 'form-control'}),
            'student': forms.Select(attrs={'class': 'form-control'}),
            'subject': forms.Select(attrs={'class': 'form-control'}),
            'quarter': forms.TextInput(attrs={'class': 'form-control'}),
        }

Формы в своих html-файлах:

  • mark_attendance.html

<div class="content">
      <h2>Mark Attendance</h2>
        <form method="post">
        {% csrf_token %}
            <div class="form-group">
                <label for="student">Student:</label>
                <select id="student" name="student">
                <option value="">Select Student</option>
                    {% for student in students %}
                    <option value="{{ student.id }}">{{ student.first_name }} {{ student.last_name }}</option>
                    {% endfor %}
                </select>
            </div>
        
            <div class="form-group">
                <label for="date">Date:</label>
                <input type="date" id="date" name="date">
            </div>
        
            <div class="form-group">
                <label for="is_present">Present:</label>
                <input type="checkbox" id="is_present" name="is_present">
            </div>
            <button type="submit">Submit</button>
        </form>
  • input_grades.html

    <div class="content">
          <h2>Input Grades</h2>
              <form method="post">
                      {% csrf_token %}
                      <div class="form-group">
                          <label for="student">Student:</label>
                          <select id="student" name="student">
                              <option value="">Select Student</option>
                              {% for student in students %}
                              <option value="{{ student.id }}">{{ student.first_name }} {{ student.last_name }}</option>
                              {% endfor %}
                          </select>
                      </div>
                      <div class="form-group">
                          <label for="subject">Subject:</label>
                          <select id="subject" name="subject">
                              <option value="">Select Subject</option>
                              {% for subject in subjects %}
                              <option value="{{ subject.id }}">{{ subject.subject_name }}</option>
                              {% endfor %}
                          </select>
                      </div>
                      <div class="form-group">
                          <label for="quarter">Quarter:</label>
                          <select id="quarter" name="quarter">
                              <option value="">Select Quarter</option>
                              <option value="Q1">Q1</option>
                              <option value="Q2">Q2</option>
                              <option value="Q3">Q3</option>
                              <option value="Q4">Q4</option>
                          </select>
                      </div>
                      <div class="form-group">
                          <label for="grade">Grade:</label>
                          <input type="text" id="grade" name="grade">
                      </div>
                      <button type="submit">Submit</button>
              </form>
      </div>
    
Вернуться на верх