Как я могу использовать Django Smart Select для фильтрации ManyToManyField? - PullRequest
2 голосов
/ 04 марта 2011
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, после выбора курса из выпадающего списка виджет единиц должен содержать только те единицы, которые связаны с выбранным курсом.

Спасибо, Анкс

1 Ответ

0 голосов
/ 04 марта 2011

Я сделал нечто подобное с Javascript.

Начните с отключенного HTML-элемента Unit.Как только пользователь выбирает курс, Ajax-запрос выполняется на сервер с выбранным курсом, и действительные единицы возвращаются.По-прежнему используя Javascript, вы добавляете эти модули в соответствующий элемент и только затем включаете его.Если пользователь изменяет курс, выполняется новый запрос на обновление элемента Unit соответствующими модулями.

Чтобы ускорить процесс, вы можете предоставить все модули клиенту, а также динамически загрузить их с помощью Javascript, как толькоКурс выбран.Этот подход сокращает время ожидания, но увеличивает размер передаваемого файла (если они не сотни, это, вероятно, лучше).

...