默认值=';假';在添加新项时,不会在django admin Boolean字段中反映

默认值=';假';在添加新项时,不会在django admin Boolean字段中反映,django,django-models,django-admin,field,Django,Django Models,Django Admin,Field,1) 当我在django管理站点中添加新项时,所有复选框都设置为true,即使默认值设置为false 2) 如果我没有触摸任何复选框并保存项目,当我重新打开它进行编辑时,所有复选框都会根据默认值设置为相应的值(有些为真,有些为假) 3) 如果我取消选中并重新检查一些默认为false的内容,则在重新打开后不会产生任何效果(它是false,就像我没有触摸它一样) 4) 如果我取消选中一些应该为真的,它的值将被保存(因此稍后为假) 5) 当我以后编辑这些值时,它们会完全按照预期保存。没有故障 您是否遇

1) 当我在django管理站点中添加新项时,所有复选框都设置为true,即使默认值设置为false

2) 如果我没有触摸任何复选框并保存项目,当我重新打开它进行编辑时,所有复选框都会根据默认值设置为相应的值(有些为真,有些为假)

3) 如果我取消选中并重新检查一些默认为false的内容,则在重新打开后不会产生任何效果(它是false,就像我没有触摸它一样)

4) 如果我取消选中一些应该为真的,它的值将被保存(因此稍后为假)

5) 当我以后编辑这些值时,它们会完全按照预期保存。没有故障

您是否遇到过类似的故障?问题出在哪里

(在django 1.3.1、python 2.6.6和sqlite3上)


谢谢

您应该传递一个布尔值,而不是字符串。就你而言:

Something1 = models.BooleanField(default=False)
Something2 = models.BooleanField(default=True)
Something3 = models.BooleanField(default=False)

对于
BooleanField
Django需要的是布尔值,而不是字符串!字符串将被计算为布尔值
True
,您可以在python控制台中轻松验证该值:

>>> bool('True')
True
>>> bool('False')
True
因此,您必须使用类似于
Something1=models的东西。BooleanField(默认值=False)

是在常量而不是字符串中构建的。
>>> bool('True')
True
>>> bool('False')
True