Django - 复选框数组

时间:2011-10-27 08:38:26

标签: django django-forms django-templates checkbox django-models

我想在我的某个模板中输出一些复选框,但我无法让它工作。

我正在尝试在我的表单中传递一个包含forms.BooleanField()的数组,如:

class ProjetSettingsForm(forms.Form):

    ## A bunch of form fields of no interest

    arrayCheck = []
    cb1 = forms.BooleanField()
    cb2 = forms.BooleanField()
    arrayCheck.append(cb1)
    arrayCheck.append(cb2)

并在我的模板中将其输出为

{% for a in form.arrayCheck %}
{{ a }}
{% endfor %}

我的表单由视图调用:

def settings(request):
    if request.method == "POST" and (request.POST.get("settings_task_type", "") == "Enregistrer Task Type"):
                form = ProjetSettingsForm(request.POST, proj_id=request.session['proj'])
                if form.is_valid():
                        settings = form.save_task_type()
                        c = {'proj':proj, 'form':form, 'settings':settings}
                        return render_to_response('projet/settings.html', c, context_instance=RequestContext(request))

        else:
                form = ProjetSettingsForm(proj_id=request.session['proj'])
                settings = ""

        c = {'proj':proj, 'form':form, 'settings':settings}
        return render_to_response('projet/settings.html', c, context_instance=RequestContext(request))

但它显示:

<django.forms.fields.BooleanField object at 0xb595a2ec> <django.forms.fields.BooleanField object at 0xb595a22c> 

如何让它正确显示复选框?

我需要将复选框作为一个数组而不是一个一个地传递的原因是它们会有很多并且我不会事先知道它们的确切数字,这取决于SQL查询。

修改

如果有人遇到这篇文章,我找到了解决方案。当我需要传递一系列复选框时,我不使用表单。

我直接从我的视图发送数组,在模板中创建复选框并在request.POST.getlist('my_array')

中获取结果

1 个答案:

答案 0 :(得分:3)

请勿在表单外使用表单字段。他们不像那样工作。使用MultipleChoiceField创建表单。