Python Django布尔值是;“真的”;迁移后,未在ModelForm中选择
我正在尝试向模型中添加一行,并在Django的ModelForm中编辑该选项。我希望该字段在默认情况下为True。以下是我要添加到模型中的内容:Python Django布尔值是;“真的”;迁移后,未在ModelForm中选择,python,django,django-models,django-south,Python,Django,Django Models,Django South,我正在尝试向模型中添加一行,并在Django的ModelForm中编辑该选项。我希望该字段在默认情况下为True。以下是我要添加到模型中的内容: field_name = models.BooleanField(default=1) 然后,我使用South进行迁移。一切都运行得很好,除了我的数据库中这个字段充满了“1”,它充满了“True”,而且由于某种原因,当它调出模型表单时,复选框在“True”时没有被选中。当我将数据库中的“True”更改为“1”时,它将被选中 试图在这里找到一个好的解决
field_name = models.BooleanField(default=1)
然后,我使用South进行迁移。一切都运行得很好,除了我的数据库中这个字段充满了“1”,它充满了“True”,而且由于某种原因,当它调出模型表单时,复选框在“True”时没有被选中。当我将数据库中的“True”更改为“1”时,它将被选中
试图在这里找到一个好的解决方案。看起来很奇怪。你试过这个吗
field_name = models.BooleanField(default=True)
您使用的是什么数据库,您的数据库支持布尔字段吗?或者它是否使用0和1表示false和true的smallint字段?另请参见:我在本地使用sqlite,这就是我看到的问题。sqlite中的列类型是什么?Python中的布尔值是
true
或false
。如果它是0或1,或者别的什么,它不是布尔值。即使它是数据库中的一个TINYINT
,Django也会在代码获取它之前将其转换为True
或False
。另外,当这个框没有在你的模型表单中被选中时,看看它是否在管理员中。它没有在谷歌管理员中被选中。但是,当我将该值更改为1时,它显示checked.sqlite不是生产数据库。你可以忽略它造成的错误。在真实的数据库(如postgresql)上测试您的应用程序,不要相信sqlite在开发环境中会产生什么。