В моей модели у меня много полей
mentors = models.ManyToManyField(MentorArea, verbose_name='Areas', blank=True)
В моей форме я хочу сделать это как:
раскрывающийся список со списком всех
MentorArea объекты, которые не имеют
был связан с объектом.
Рядом с этим кнопка добавления, которая
вызовет функцию JavaScript
который добавит его к объекту.
Затем в списке ul, который имеет
каждый выбранный объект MentorArea с
х рядом с ним, который снова вызывает
функция JavaScript, которая будет
удалить MentorArea из
объект.
Я знаю, что для изменения способа визуализации элемента поля вы создаете пользовательский виджет и переопределяете функцию рендеринга, и я сделал это для создания кнопки добавления.
class AreaWidget(widgets.Select):
def render(self, name, value, attrs=None, choices=()):
jquery = u'''
<input class="button def" type="button" value="Add" id="Add Area" />'''
output = super(AreaWidget, self).render(name, value, attrs, choices)
return output + mark_safe(jquery)
Однако я не знаю, как составить список выбранных в данный момент списков. Может кто-нибудь мне помочь? Кроме того, каков наилучший способ отфильтровать список так, чтобы он отображал только объекты MentorArea, которые не были добавлены? В настоящее время у меня есть поле как
mentors = forms.ModelMultipleChoiceField(queryset=MentorArea.objects.all(), widget = AreaWidget, required=False)
но это показывает всех наставников, независимо от того, были ли они добавлены или нет.
Спасибо