所以我有一个动态表单,从一个字段到100或更多可以有任意大小,我想知道如何将Django的表单向导用于该动态表单。通过将字段添加到字段字典中,可以在表单的__init__中生成字段。
class MyDynamicForm(forms.Form):
def __init__(self, *args, **kwargs):
parent = kwargs.pop('parent')
super(MyDynamicForm, self).__init__(*args, *kwargs)
# Add each element into self.fields
for element in parent.elements:
if element.type == TEXT_FIELD:
self.fields[element.name] = forms.CharField(widget=forms.Textarea)
elif element.type == CHECKBOX_FIELD:
self.fields[element.name] = forms.BooleanField()
elif element.type == SINGLE_CHOICE_FIELD:
self.fields[element.name] = forms.ChoiceField(choices=element.choices.split(','))
elif element.type = MULTIPLE_CHOICE_FIELD:
self.fields[element.name] = forms.MultipleChoiceField(choices=element.choices.split(','))
我假设我可以将这个表单类包装在一个函数中,只让它返回表单类,它只通过执行for element in parent.elements[start:end]
而不是我正在创建的每个向导类来创建一部分字段但我觉得这不是正确的做法。我该怎么做呢,有正确的方法吗?或者甚至可能吗?谢谢!