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, и переписать его методы валидации. Но это кажется сложным и, что более важно, чревато ошибками.

Есть ли какой-то более простой или стандартный способ достижения моей цели? Действительно ли это настолько необычная задача? Заранее спасибо!

Вернуться на верх