Django наборы динамических форм

У меня есть несколько произвольных структур данных, которые я хочу заполнить пользователем, и я думаю, что django formsets - самый подходящий способ справиться с этим, благодаря префиксам, но я не уверен.

Допустим, у меня всегда есть исходные данные, ключи и значения которых могут меняться в зависимости от ситуации, но для этого примера я буду использовать:

fields = {
  "first"  : forms.IntegerField(),
  "second" : forms.CharField()
}

У меня есть следующий класс для динамического создания форм:

class fieldsForm (forms.Form):
   pass

Так, я создаю класс динамически:

DynamicForm = type('DynamicForm', (fieldsForm,), fields)

Затем я создаю набор форм и инстанцирую его:

dynamicFormSet = forms.formset_factory(DynamicMsgForm)
formset = dynamicFormSet()

Ключ в том, что я могу иметь дополнительные дикты полей, которые я хочу обрабатывать в том же наборе форм, давая каждому экземпляру формы дикта индекс, например:

another = {
  "first"  : forms.IntegerField(),
  "second" : forms.CharField(),
  "third"  : forms.IntegerField()
}

Наконец, я снова создаю класс динамически, инстанцирую его и пытаюсь включить его в предыдущий экземпляр набора форм:

DynamicForm = type('DynamicForm', (fieldsForm,), another)
anotherFormInstance = DynamicForm()
formset.add_fields(form=anotherFormInstance, index=1)

Моя проблема в том, что набор форм не обновляется с "другим" экземпляром формы, я думаю, что я неправильно понимаю наборы форм. Я рассчитываю различать поля формы по префиксу благодаря установленному индексу при добавлении форм, так как ключи могут повторяться.

Примечание: я работаю с классами композитного паттерна, первая структура данных - это композит, который содержит листья, но который может содержать один или более композитов, которые могут содержать только листья, но не другой композит.

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