django - 动态表单字段集

标签 django django-templates django-forms django-models

一个表格会吐出未知数量的问题来回答。每个问题都包含一个提示、一个值字段和一个单位字段。表单是在运行时在表单类的 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/

相关文章:

python - Django 在表单上保存未完成的进度

django - 如何从表单构造函数动态更新Django Form Meta类字段?

python - Django formtools 向导生成空白页(未返回错误)

python - 如何在多对多表中添加列(Django)

python - 带外键的 Django 表单

python - Django:在 __init__ 或保存函数中访问和更新表单类的字段

Django 将已知的确切字符串作为 url 参数传递

Django 调试工具栏不会在 Chrome 上隐藏

python - django 模板 anchor 标记不起作用

python - 在 Django 中,在哪里控制权限式查看?在 url(通过通用 View )、模板或 View 中?