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)
Моя проблема в том, что набор форм не обновляется с "другим" экземпляром формы, я думаю, что я неправильно понимаю наборы форм. Я рассчитываю различать поля формы по префиксу благодаря установленному индексу при добавлении форм, так как ключи могут повторяться.
Примечание: я работаю с классами композитного паттерна, первая структура данных - это композит, который содержит листья, но который может содержать один или более композитов, которые могут содержать только листья, но не другой композит.