2012-01-15 55 views
2

1)当我在django管理站点中添加新项目时,即使默认设置为false,所有复选框也设置为true。 2)如果我没有触及它们并保存项目,当我重新打开它进行编辑时,所有复选框都会根据默认设置(一些是true,一些是false)被设置为它们的适当值。 3)如果我取消选择并重新检查一些默认应该为false的东西,它在重新打开后没有任何影响(这是假的,就像我没有碰它)。默认='False'不反映在django admin布尔字段添加新项目时

4)如果我取消了一些这应该是真实的,它的价值被保存(所以它是假的以后)

5)当我后来编辑,他们是完全保存为预期值。没有毛病。

你有没有遇到类似的故障?问题在哪里?

(Django上1.3.1,2.6.6蟒,sqlite3的)

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

感谢

+5

['True'和'False'](http://docs.python.org/library/constants.html#False)内建常量而不是字符串。 – 2012-01-15 16:03:51

回答

17

你应该通过一个布尔值,而不是字符串。你的情况:

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

对于BooleanField Django是期待一个布尔值,而不是字符串!字符串将被计算到的True布尔值,你可以在Python控制台很容易地验证:

>>> bool('True') 
True 
>>> bool('False') 
True 

所以,你必须使用类似Something1 = models.BooleanField(default=False)

相关问题