【问题标题】:Processing dynamic MultipleChoiceField in django在 django 中处理动态 MultipleChoiceField
【发布时间】:2010-08-21 13:21:41
【问题描述】:

到目前为止,我看到的所有答案都让我感到困惑。

我制作了一个表单,该表单根据传入的参数和存储在数据库中的问题动态构建。这一切都很好(注意:它不是 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,即使有两个提交的值。

答案:如果我循环通过self.fields 而不是self.cleaned_data,for 循环现在可以正常工作:

for field in self.fields:
    print self.cleaned_data[field]

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    ...这不起作用...

    你确定吗?你测试过吗?通常,MultipleChoiceField 的 cleaned_data 值是在表单上选择的值的列表。

    是的,它只返回 question_1 一次,但返回的值本身包含多个值。

    【讨论】:

    • 啊,是的,它确实有效。我需要做一些调整。谢谢 - 不确定我是否朝着正确的方向前进。
    • 当我在 multipart/form-data 表单中使用多项选择时会发生什么?清理数据返回无! :(
    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多