2011-07-18 59 views
0

我想添加一行到我的模型,並在Django的ModelForm中可以編輯該選項。我希望該字段默認爲True。以下是我要添加到我的模型中的內容:Django布爾是遷移後「真」,並沒有在ModelForm中選擇

field_name = models.BooleanField(default=1) 

然後,我使用South進行遷移。一切正常,除了我的數據庫中填滿了「1」這個字段以外,它完全是「真」,並且出於某種原因,當它拉起ModelForm時,複選框在「真」時不會被選中。當我在數據庫中將「True」更改爲「1」時,會進行檢查。

試圖在這裏找到一個好的解決方案。似乎很奇怪。

+0

Python中的布爾值是'True'或'False'。如果它是0或1,或者其他,它不是布爾值。即使它是數據庫中的「TINYINT」,Django在您的代碼獲取它之前將其轉換爲「True」或「False」。附:雖然該框未在您的ModelForm中被選中,請查看它是否在管理員中。 –

+0

它未在Google管理員中選中。但是,當我將值更改爲1時,它顯示已檢查。 – Brenden

+1

sqlite不是一個生產數據庫。你可以忽略它造成的錯誤。在真正的數據庫上測試你的應用程序,比如postgresql,不要相信開發環境中可能產生的sqlite。 –

回答

0

你有沒有試過這個。

field_name = models.BooleanField(default=True) 

你使用的數據庫是否支持數據庫布爾型字段?還是它使用0和1的小字段來表示錯誤和真實?

+0

另請參閱:https://docs.djangoproject.com/en/dev/releases/1.2/#booleanfield-on-mysql –

+0

我在本地使用sqlite,這是我看到這個問題的地方。 – Brenden

+0

sqlite中的列類型是什麼? –