gpt4 book ai didi

只有 BooleanField 的 Django 表单

转载 作者:行者123 更新时间:2023-12-02 08:20:41 28 4
gpt4 key购买 nike

我对 Django 相当陌生,我正在使用 Django 1.0。我有这个:
表单.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())
这使得表格有效。这个解决方法使我能够立即继续前进,但知道我是否误解了某些内容仍然很有趣......

最佳答案

我的问题中的代码存在错误。感谢@d0ugal 通过提供一个略有不同的示例来帮助我发现它。问题出在这里:

form = MyForm(request.POST or None) # <- PROBLEM HERE!!!!!!!!!!!!!!!!
if request.method == 'POST' and form.is_valid():
# do stuff...

错误是我假设 request.POST 如果是帖子,则评估结果为 True。但由于浏览器不会为未选中的复选框发布任何内容,而且这是唯一的字段,因此 POST 数据是一个空字典,其计算结果为 False。这导致 None 被用作初始化数据,导致表单未绑定(bind)且无效。
@d0ugal 的示例执行安全操作并首先测试 request.method。

关于只有 BooleanField 的 Django 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554142/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com