4

您好,我是 Django 表单的新手。我正在尝试在我的表单中添加一个复选框。当我提交表单时,我期望复选框字段应该返回 True 或 False,(取决于复选框是否被选中)。

但是,如果选中该字段,则发布“打开”,如果未选中该字段,则不发布任何内容。以下是我的表单中的代码片段:

from django import forms
class MyForm(forms.Form):
    def __init__(self):
        self.fields['has_code']= forms.CharField(widget= forms.CheckboxInput())

我想要的是当我发布表单时,我应该将发布数据作为 {'has_code': True}

4

1 回答 1

8

那是你的浏览器,而不是 Django。但是(尽管您没有显示您的视图,这会有所帮助)您正在查看 request.POST。不要那样做。使用 Django 表单的全部意义在于它规范了这样的东西,所以你应该查看表单的cleaned_data字典。

def my_form_view(request):
    if request.method == 'POST':
        my_form = MyForm(request.POST)
        if my_form.is_valid():
            # my_form.cleaned_data['has_code'] is now a bool

您还应该BooleanField在表单中使用。__init__另外,除非您正在做一些动态的事情,否则您不应该覆盖。你的表格应该是:

class MyForm(forms.Form):
    has_code = forms.BooleanField(widget= forms.CheckboxInput())
于 2013-10-17T09:56:18.247 回答