How can I filter fields in my TopForm in such a way that when a user selects a teacher, automatically all other fields show related values to the teacher. Suppose Adam is the teacher and in the Network department teaches network programming in the 4th semester(added in the admin). Now the user selects Adam, when Adam selected, the department dropdown shows only Network which is related to Adam and so on.
forms.py
class AnswerForm(ModelForm):
class Meta:
model = Student_Answer
fields = ('answer',)
labels = {'answer': ''}
widgets = { 'answer': RadioSelect(choices=RATING_CHOICES)}
class TopForm(forms.Form):
teacher = forms.ModelChoiceField(queryset=Teacher.objects.all())
department = forms.ModelChoiceField(queryset=Department.objects.all())
subject = forms.ModelChoiceField(queryset=Subject.objects.all())
semester = forms.ModelChoiceField(queryset=Semester.objects.all())
models.py
class Question(models.Model):
question = models.CharField(max_length=200)
class Department(models.Model):
name = models.CharField(max_length=60)
class Semester(models.Model):
num = models.IntegerField(choices=SEMESTER, default=1)
class Subject(models.Model):
name = models.CharField(max_length=100)
code = models.CharField(max_length=5, null=True)
semester = models.ForeignKey(Semester, on_delete=models.CASCADE, null=True)
department = models.ManyToManyField(Department)
class Teacher(models.Model):
name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200, null=True)
department = models.ManyToManyField(Department)
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
class Student_Answer(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
semester = models.ForeignKey(Semester, on_delete=models.CASCADE)
answer = models.SmallIntegerField(choices=RATING_CHOICES, default=None)
question from:
https://stackoverflow.com/questions/65641033/how-to-filter-form-based-on-foreign-key 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…