Как динамически отображать поля ввода формы на основе выбора пользователя из выпадающих опций
У меня есть форма, которая используется для ввода оценок учеников по предметам, на этой форме у меня есть 3 выпадающих окна, которые зависят друг от друга, я хочу добиться того, что после того, как пользователь выберет класс, в котором учатся ученики, я хочу, чтобы поля ввода для каждого предмета появлялись на той же форме, только в том классе, который выбрал пользователь, чтобы пользователь мог вводить оценки учеников по предметам, но мне трудно понять, как реализовать такое поведение. Короче говоря, я хочу показывать поля ввода для предметов на основе класса, который выбрал пользователь
form.py
forms.py
# deal with entering results
class ResultForm(forms.ModelForm):
class Meta:
model = Result
fields = ["room", "exam","student","percentage"]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["exam"].queryset = Exam.objects.none()
if "room" in self.data:
try:
class_id = int(self.data.get("room"))
self.fields['exam'].queryset = Exam.objects.filter(room=class_id).order_by('name')
except(ValueError,TypeError):
pass
elif self.instance.pk:
self.fields['exam'].queryset = self.instance.classroom.exam_set.order_by('name')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["student"].queryset = Exam.objects.none()
if "room" in self.data:
try:
class_id = int(self.data.get("room"))
self.fields['student'].queryset = Student.objects.filter(room=class_id).order_by('name')
except(ValueError, TypeError):
pass
elif self.instance.pk:
self.fields['student'].queryset = self.instance.classroom.exam_set.order_by('name')
# deal with entering grade per subject
class MarkForm(forms.ModelForm):
class Meta:
model = Mark
fields = ["result", "course","grade"]