2012-01-15 57 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)

相關問題