我如何使用Django smart select来过滤ManyToManyField?

时间:2011-03-04 07:41:09

标签: django django-models django-admin

class Course(models.Model):
    course_code = models.CharField(max_length=100,unique=True)
    title = models.CharField(max_length=200)
    short = models.CharField(max_length=50)
    elective_group = models.CharField(max_length=100)

class Unit(models.Model):
    title = models.CharField(max_length=100)
    short = models.CharField(max_length=50)
    course = models.ForeignKey(Course)

class Pattern(models.Model):
    pattern_name = models.CharField(max_length=200)

class ExamSchedule(models.Model):
    exam_date = models.DateTimeField()
    course = models.ForeignKey(Course)
    pattern = models.ForeignKey(Pattern)
    **units = models.ManyToManyField(Units)**

我需要实现类似于用户创建Examschedule对象的功能,在从下拉列表中选择课程后,单元小部件应该只包含与所选课程相关的单元。

由于 Anks

1 个答案:

答案 0 :(得分:0)

我用Javascript做了类似的事情。

从禁用单元HTML元素开始。一旦用户选择了课程,就会使用所选课程向服务器发出Ajax请求,并返回有效单元。仍然使用Javascript,您将这些单位添加到适当的元素,然后才启用它。如果用户改变课程,则会使用适当的单位更新Unit元素。

为了加快速度,您可以将所有单元提供给客户端,并在选择课程后使用Javascript动态加载它们。这种方法减少了等待时间,但增加了传输的文件大小(如果它们不是数百,则可能更好)。