2013-02-19 127 views
1

我无法正确保存我的表单(一个ModelForm),因为django显示没有值的复选框(我希望每个字段的值都为“true”,两者都选中而不是未选中。 ..但事实并非如此)。 当我提交表单时,POST中没有收到任何数据!Django表单:复选框无值显示

下面是一块啊,我的模板:

<div> 
     {{form.displayAge.label_tag}} 
     {{form.displayAge}} 
     {{form.displayAge.errors}} 
</div> 

{{form.displayAge}}以这种方式呈现:

<input checked="checked" type="checkbox" name="displayAge" id="id_displayAge"> 

但是...因为它没有价值,选中/取消选中该复选框无助!我该怎么办? 我想避免用手输入表单域!

回答

1

不,不需要value字段。如果复选框被选中,浏览器将默认提交"on"作为默认值,如果没有提供。

如果您没有在您的视图中获得该值,则还有其他错误。请注意,由于您使用的是Django表单,因此无论如何您都不应该手动检查request.POST:使用form.cleaned_data

+0

我很困惑...这是一个Django功能吗?由于html规范不能确认你写了什么:http://www.w3.org/TR/html-markup/input.checkbox.html#input.checkbox.attrs.value ...并在浏览器中进行简单的测试确认没有任何东西在类似的情况下被提交(简单的html表单和“get”方法以及没有值的复选框) – daveoncode 2013-02-19 15:08:03

+0

arrrgh!问题是这样的:我用Django的用户模型配置我的表单而不是我的UserProfile模型...用MyForm(request.POST,instance = request.user.userprofile)替换MyForm(request.POST,instance = request.user)一切都好! :) – daveoncode 2013-02-19 15:22:36