所以我有一个动态表单,它可以具有从一个字段到 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]
而不是创建每个向导类来创建部分字段,但我觉得这不是正确的做法。我该怎么办,有正确的方法吗?或者甚至有可能吗?谢谢!