Python Django - динамическое добавление и создание объектов в ModelMultipleChoiceField
У меня возникла проблема, которая, как мне казалось, довольно распространена, но я нигде не могу найти на нее ответ. У меня есть 2 модели Item
и Group
, где элемент может быть членом многих (или ни одной) групп. Я пишу представление для создания Item
. Мой код выглядит следующим образом:
# models.py
class Group(models.Model):
...
class Item(models.Model):
item = models.CharField(...)
groups = models.ManyToManyField(Group)
# forms.py
class NewItemForm(forms.Form):
item = forms.CharField()
groups = forms.ModelMultipleChoiceField(
queryset = models.Group.objects.all(),
widget = forms.CheckboxSelectMultiple,
required = False
)
В моем шаблоне я добавляю javascript, который позволяет пользователю динамически создавать новый флажок (и устанавливать его значение на что-то вроде __new__group_name
) для новой группы. Я хочу добиться того, чтобы пользователь мог создать новую группу и добавить в нее элемент, пока этот элемент находится в процессе создания.
К сожалению, это не может работать, потому что чекбоксы, генерируемые Django, передают первичный ключ Group
, а группы с первичным ключом __new__group_name
явно не существует, поэтому валидация этой формы не проходит. Хотя это правильно и я рад этому, я не могу найти легкого решения для этой проблемы. Единственное, о чем я могу думать, это создать собственный класс Field
, наследующий от ModelMultipleChoiceField
, и переписать его методы валидации. Но это кажется сложным и, что более важно, чревато ошибками.
Есть ли какой-то более простой или стандартный способ достижения моей цели? Действительно ли это настолько необычная задача? Заранее спасибо!