一个表格会吐出未知数量的问题来回答。每个问题都包含一个提示、一个值字段和一个单位字段。表单是在运行时在表单类的 init 方法中构建的。
编辑:每个问题都会收到一个独特的提示,用作标签,以及选择元素的唯一单位列表。
这似乎是可迭代表单字段集的完美案例,可以轻松设置样式。但由于字段集 - 例如在 django-form-utils 中的那些被定义为元组,它们是不可变的......我找不到在运行时定义它们的方法。这是可能的,或者可能是另一种解决方案?
编辑:
带有 initial_data 的表单集不是答案——initial_data 只是启用表单集中表单字段的默认值设置。不能通过initial_data 将项目列表发送到choicefield 构造函数。
……除非我错了。
最佳答案
退房 formsets .您应该能够将 N 个问题中的每一个的数据传递为 initial data .沿着这些路线的东西:
question_data = []
for question in your_question_list:
question_data.append({'prompt': question.prompt,
'value': question.value,
'units': question.units})
QuestionFormSet = formset_factory(QuestionForm, extra=2)
formset = QuestionFormSet(initial=question_data)
关于django - 动态表单字段集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625505/