如何在Django表单中创建字段列表

有什么办法可以使django表单类实际包含一个字段数组?我有一个数据库,它将提取可变数量的问题来询问用户,每个问题都知道如何定义它的小部件...等等,我似乎无法将其连接到Django表单。


我尝试了这个:


class MyForm(forms.Form):

    question = []

    questions = Question.objects.all()

    for q in questions:

        question.append(forms.CharField(max_length=100, label=q.questionText))

但这在我创建的新实例时似乎没有暴露我的问题列表MyForm。有什么方法可以使用django表单获取可变数量的表单字段,或者这超出了它的功能范围?


守着星空守着你
浏览 218回答 2
2回答

慕桂英546537

当然可以!class MyForm(forms.Form):    def __init__(self, *args, **kwargs):        super(MyForm, self).__init__(*args, **kwargs)        for i, q in enumerate(Question.objects.all()):            self.fields['%s_field' % i] = forms.CharField(max_length=100, label=q.questionText)注意:请确保您的问题在两次呼叫之间是顺序排列的。因为表单提交,回执等都会重新填充字段列表。如果数据是有序的并且是静态的,那将不是问题。另外,您可能希望查看FormSets,这是一种可能更适合您的情况的表单列表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python