我的models.py中有四个模型:
models.py
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对象时,我希望单位(字段)多值小部件应该只包含与课程相关的那些值,因为每个课程可以有多个单元。因此,如果用户创建了一个Examschedule对象,并且从下拉列表中选择了一个课程,则单元小部件应该只包含与所选课程相关的单元。
Django-Smart-Select 可能很有用,但它只支持外键链接和分组选择,也不支持ManyToManyField链接选择。
谢谢
答案 0 :(得分:0)
您可以使用Ajax
请求发送所选课程,并执行此操作以获取相关单元。
假设您选择communication networks (cn)
作为课程,您可以获得相关单位:
cn_units = Unit.object.filter(course = 'cn').values_list('id',flat=True)
这将返回该课程的所有相关单元的单个列表。
您可以将此列表作为对ajax
请求的回复发送,迭代此列表并在unit
中填充ExamSchedule form
的选择框。我认为简单的ajax因为它非常灵活。