我正在尝试创建一个列出特定模型的所有对象的页面,但顶部还有一个下拉列表,根据下拉列表中选择的内容过滤列表。下面是一些示例代码。
models.py
class School(models.Model):
name = models.CharField(max_length=64)
slug_name = AutoSlugField(populate_from='name', unique=True)
class Student(models.Model):
name = models.CharField(max_length=32)
school = models.ForeignKey(School)
tables.py
class StudentTable(tables.Table):
class Meta:
model = Student
fields = ('name', 'school')
attrs = {'class': 'table table-hover', 'id': 'accessorycharge_list'}
下面是没有下拉列表的视图。
views.py
def list_students(request):
student_list = Student.objects.all()
table = StudentTable(student_list)
RequestConfig(request).configure(table)
return render(request, 'students/list_students.html', {'table': table})
在这个例子中,理论上我想在与列表相同的模板中下拉。下拉列表将包含学校的名称。如果未选择任何内容,列表将显示所有学生,但是一旦在下拉列表中选择了学校,列表将被过滤,并且只显示其学校字段与下拉列表中选择的学校相匹配的学生。如何编写视图和/或模板以实现此功能?感谢。