我有一个标准Django格式的布尔字段,定义为:
my_boolean_field = BooleanField(initial=True)
当我使用初始数据呈现表单时,并且我的“布尔”字段设置为初始值False,当表单呈现时,尽管该值如html所示为False,但仍会选中它:
<p><label for="id_2">my_boolean_field</label>:
<input checked="checked"
type="checkbox"
name="2"
value="False"
id="id_2" />
</p>
有没有其他人经历过这种情况,或者知道如何修复它,以便在初始数据/输入值为false时不选中复选框?
更新:即使我从BooleanField中删除initial=True参数,也会发生同样的事情。
首先,在
BooleanField
上不能有required=False
,请使用NullBooleanField
:完成此操作后,让我知道新小部件的HTML输出是什么?
编辑
我以为这是个模型。这是普通的django.forms.Form吗?
编辑2
我的考试表:
我的模板:
这就是我查看页面源代码时得到的输出。已编辑
我的观点新的
你所展示的和我所看到的并不匹配。请粘贴您的完整表格、视图和模板?
编辑3
我只看到这样的输出:
当我在引号中加上False时:
我发布这个答案是因为我有同样的问题,而弗朗西斯的答案对我没有帮助。
我最终发现解决方案是重新运行
manage.py syncdb
。我的字段以前是IntegerField,我将它们转换为BooleanField。BooleanField在初始化和检查时读取数据库中是否存在value=“0”。不管你的模特怎么说。你想看到:当你检查一个元素时。由于这个bug出现在Django管理面板中,所以它与forms.py无关。
这纯粹是一个模型和数据库问题。如果更改了models.py字段类型,请尝试重新生成数据库。
相关问题 更多 >
编程相关推荐