Данные в форме не отображаются в выпадающем списке Django

Итак, у меня есть система, которую я сейчас создаю. В настоящее время я реализовал форму, где администратор может выбрать из выпадающего списка учеников и добавить этих учеников в класс, но по какой-то причине ученики не отображаются в выпадающем списке, когда я добавляю ученика через форму, которую я создал для пользователя, но когда я использую Django admin, я могу заставить учеников отображаться в классе, который я выбрал, так что я действительно запутался, в чем проблема, и мне нужна помощь в реализации или изменении, чтобы заставить это работать. В целом, моя цель - заставить учеников отображаться в выпадающем списке для выбора и добавления в класс и знать, как правильно добавить моих учеников в класс, так как это вызывает у меня проблему

просмотров

# check to see if students already exist in class and display those who aint to be added
@login_required
def manage_class_student(request, classPK=None):
    if classPK is None:
        messages.warning(request, 'Class ID is Unknown')
    else:
        context = {}
        context['classPK'] = classPK
        _class = Room.objects.get(id=classPK)
        # print(ClassStudent.objects.filter(classIns = _class))
        students = Student.objects.exclude(id__in=ClassStudent.objects.filter(classIns=_class).values_list('student').distinct()).all()
        context['students'] = students

        html_form = render_to_string('school/manage_class_student.html', context=context, request=request)

        return JsonResponse({'html_form': html_form})

# save the students to the respective class after being selected
@login_required
def save_class_student(request):
    form = SaveClassStudent()
    if request.method == 'POST':
        form = SaveClassStudent(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, "Student has been added successfully.")
            redirect('class_detail')

        else:
            messages.error(request, 'Error Adding student in class')

forms.py

class ClassRoomForm(forms.ModelForm):

    class Meta:
        model = Room
        fields = ('form_teacher', 'name', 'level', 'school_year')

    def clean_assigned_faculty(self):
        form_teacher = self.cleaned_data['assigned_faculty']
        try:
            teacher = Teacher.objects.get(id=form_teacher)
            return teacher
        except:
            raise forms.ValidationError(f'Assigned Faculty value is invalid.')

class SaveClassStudent(forms.ModelForm):
 
    class Meta:
        model = ClassStudent
        fields = ('classIns', 'student')

    def clean_classIns(self):
        cid = self.cleaned_data['classIns']
        try:
            classIns = Room.objects.get(id=cid)
            return classIns
        except:
            raise forms.ValidationError("Class ID is Invalid.")

    def clean_student(self):
        student_id = self.cleaned_data['student']
        _class = Room.objects.get(id=self.data.get('classIns'))
        student = Student.objects.get(id=student_id)
        try:
            cs = ClassStudent.objects.get(classIns=_class, student=student)
            if len(cs) > 0:
                raise forms.ValidationError(
                    f"Student already exists in the Class List.")
        except:
            return student

manage_class_student.html

<div class="container-fluid">
    <form action="" method="post">
        {% csrf_token %}
        <div class="modal-header">
            <h6 class="modal-title" id="studentModalLabel"><i class="fas fa-plus"></i> Add Student To Class</h6>
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
        </div>

        <div class="modal-body">
            <input type="hidden" name="classIns" value="{{ classPK }}">
            <div class="form-group mb-3">
                <label for="student" class="control-label">Student</label>
                <select name="student" id="student" class="form-select rounded-0 select2" required>
                    <option disabled selected></option>
                    {% for student in students %}
                    <option value="{{ student.id }}">{{ student }}</option>
                    {% endfor %}
                </select>
            </div>

            <div class="form-group mb-3 ">
                <button type="submit" class="btn btn-primary">Save</button>

            </div>

        </div>
    </form>
</div>

models.py

class Room(models.Model):
    form_teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    school_year = models.CharField(max_length=250)
    level = models.CharField(max_length=250)
    name = models.CharField(max_length=250)

    def __str__(self):
        return "[" + self.level + "] " + self.level + '-' + self.name


class ClassStudent(models.Model):
    classIns = models.ForeignKey(Room, on_delete=models.CASCADE)
    student = models.ForeignKey(Student, on_delete=models.CASCADE)

    def __str__(self):
        return self.student.student_code

    def get_present(self):
        student = self.student
        _class = self.classIns
        try:
            present = Attendance.objects.filter(
                classIns=_class, student=student, type=1).count()
            return present
        except:
            return 0

    def get_tardy(self):
        student = self.student
        _class = self.classIns
        try:
            present = Attendance.objects.filter(
                classIns=_class, student=student, type=2).count()
            return present
        except:
            return 0

    def get_absent(self):
        student =  self.student
        _class =  self.classIns
        try:
            present = Attendance.objects.filter(classIns= _class, student=student, type = 3).count()
            return present
        except:
            return 0
Вернуться на верх