[Python] Grades and Attendance form POST data didn't save to the database

Discussão em 'Python' iniciado por Stack, Novembro 30, 2024.

  1. Stack

    Stack Membro Participativo

    I'm currently working on a project where I have to input Grades and Attendance of students using Django. I have the forms for both Grades and Attendance but when I tried submitting it, it didn't show in their specific tables (Grade) and (Attendance). Can anyone help me?

    This is my views.py for both:

    @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})


    Here's my forms.py for both:

    # 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'}),
    }


    Forms in their html files:

    • 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>

    Continue reading...

Compartilhe esta Página