动态筛选ManyToMany字段作为与用户输入相关的选择

时间:2019-06-29 20:04:49

标签: python-3.x django-forms

我有一个在数据库中注册学生的表格。在表格上,选择要注册学生的课程。但是,我们有200多门课程。我不希望用户看到所有这些内容,而必须滚动下拉菜单。我想将该课程列表过滤为用户为新学生输入的年级以下两个和以上之间的课程。

我尝试了一些形式的kwarg定义(已大大简化/缩写)。我已经在模型中尝试了一些limit_choices_to定义,但我无法理解。我可以得到它仅显示等于硬编码数字的选择,但是我不能得到它来从表单中提取用户输入并过滤掉那些不相关的课程。

models.py

class Course(models.Model):  
Course_Teacher = models.ManyToManyField(Teacher, blank=False)
Course_Title = models.CharField(max_length=150, null=False)  

class Student(models.Model):
Student_Last_Name = models.CharField(null=False, max_length=50)
Student_First_Name = models.CharField(null=False, max_length=50)
Course_Enrollment = models.ManyToManyField(Course, blank=True)  

class Teacher(models.Model):
Teacher_Last_Name = models.CharField(max_length=50, null=False)
Teacher_First_Name = models.CharField(max_length=50, null=False)  


class StudentModelForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = 
            ['Student_Last_Name','Student_First_Name','Student_Grade', 
'Course_Enrollment']
        labels = {
        'Student_Last_Name': 'Student Last Name',
        'Student_First_Name': 'Student First Name',
        'Student_Grade':'Student Enrollment Grade',
        'Course_Enrollment': "Enroll Student ",

}

基于用户在StudentModelForm的“ Student_Grade”字段中的输入,我希望“ Course_Enrollment”字段仅自动显示该学生的成绩在两个等级级别(以下两个和以上两个)中的课程。例如,我不希望用户为9年级的学生滚动浏览数百个幼儿园课程。

提前谢谢!

0 个答案:

没有答案