到目前为止我看到的所有答案都让我感到困惑。
我制作了一个根据传入的参数以及数据库中存储的问题动态构建的表单。这一切都工作正常(注意:它不是一个 ModelForm,只是一个 Form)。
现在我正在尝试保存用户的响应。我如何迭代他们提交的数据以便保存它?
MultipleChoiceFields 让我尤其困惑。我将它们定义为:
self.fields['question_' + str(question.id)] = forms.MultipleChoiceField(
label=mark_safe(required_tag +
question.label + "<br/>Choose any of the following answers"),
help_text=question.description,
required=question.required,
choices=choices,
widget=widgets.CheckboxSelectMultiple())
当我选择多个选项时,实际发布的数据类似于:
question_1=5&question_1=6
django 会自动意识到这些都是同一个表单上的选项并让我在某处访问可迭代对象吗?我想做类似的事情:
for field in self.cleaned_data:
print field # save the user's response somehow
但这不起作用,因为这只会返回question_1
一次,即使有两个提交的值。
Answer:如果我循环,for 循环现在可以按预期工作self.fields
代替self.cleaned_data
:
for field in self.fields:
print self.cleaned_data[field]