您好我是Django Forms的新手。我想在我的表单中添加一个复选框。当我提交表单时,我希望复选框字段应该返回True或False(取决于是否选中复选框)。
但是如果选中该字段则发布'on',如果未选中该字段则发布任何内容。 以下是我的表单中的代码段:
from django import forms
class MyForm(forms.Form):
def __init__(self):
self.fields['has_code']= forms.CharField(widget= forms.CheckboxInput())
我想要的是当我发布表单时,我应该将帖子数据设为{'has_code':True}
答案 0 :(得分:7)
那是你的浏览器,而不是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())