【发布时间】:2010-12-05 23:08:52
【问题描述】:
我对 Django 比较陌生,我正在使用 Django 1.0。
我有这个:
forms.py:
class MyForm(forms.Form):
extra_cheeze = forms.BooleanField(required=False,
initial=False,
label='Extra cheeze')
views.py:
def order_something(request):
form = MyForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
# do stuff...
问题是除非选中复选框,否则表单无效,因此似乎没有办法从字段中获取 False 值。 据我从the docs 了解到,它应该可以工作。如果我将 CharField 添加到我的表单中,它会起作用...
我在这里误解了什么还是这是一个错误? (是的,我用谷歌搜索过,但没有发现任何相关内容)
更新:按照@Dominic Rodger 的建议,我尝试添加一个隐藏字段dummy = forms.CharField(initial='dummy', widget=forms.widgets.HiddenInput())
这使得表格有效。这种解决方法使我现在可以继续前进,但如果我误解了某些东西,我仍然会很有趣......
【问题讨论】:
-
嗯。对我来说听起来像是一个错误。您可以使用隐藏字段解决它吗?
-
有一些错误报告听起来有点相似 - 请参阅 google.co.uk/search?q=django+checkbox+forms+bug
-
我会试试的。我怀疑表单不喜欢空数据,因为浏览器不会包含未选中复选框的字段。
-
我会将此作为 Django 中的错误提交,因为我看不出任何正当理由说明我建议的更改会修复它。见docs.djangoproject.com/en/dev/internals/contributing/#id1
-
使用 django 1.0.2 和 FF 3.0.14 和 IE7,它适用于我,没有解决方法(但我在表单 html 中添加了一个提交按钮)。您使用的是哪个版本的 django 和浏览器?您是使用带有提交按钮的 html 表单,还是使用 ajax 来提交表单?
标签: django django-forms