I have four models in my models.py which are:
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)
I have all these models register with admin site, so that i can use admin functionality for these models.
My problem is when a user creates or edits a ExamSchedule object , i want the units(field) multivalue widget should contains only those values that are associated with a course as every course can have multiple units. So if user creates an Examschedule object and after selecting a course from dropdown the unit widget should only contains those units that related to the course selected.
Django-Smart-Select could have been useful but it only supports foreign key chained and grouped selects nor ManyToManyField chained select.
Thanks
You can send the selected course with a
Ajaxrequest and do this to get the related units.Lets say you select
communication networks (cn)as the course you can get the related units like so:This will return a single list of all the related units to that course.
You can send this list as a response to your
ajaxrequest, iterate over this list and populate the select box forunitinExamSchedule form. I consider plain ajax because its very flexible.