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>