2012-08-02 90 views
3

我試圖將form.cleaned_data保存在postgres數據庫中時,在django中遇到問題。Django在數據庫中使用額外字符保存表單字符串(u'string')

user_instance.first_name = form.cleaned_data['first_name'] 

數據被保存這樣(u'Firstname',)與「U」字頭和括號一樣,如果我被保存在數據庫中的元組。

我用這個噸次MySQL數據庫和以前從來沒有發生過,

我的Django的版本是1.3.1

UPDATE

我使用逗號這樣 user_profile.phone_area = phone_area, user_profile.phone_number = phone_number, user_profile.email = email,

我編輯了別人的源代碼,忘記刪除逗號,這就是它生成元組的原因。感謝您的幫助

+0

你的postgres數據庫設置是否支持unicode數據? https://docs.djangoproject.com/en/dev/ref/unicode/ – 2012-08-02 02:51:26

+0

這是我的數據庫的輸出psql -l bmdata | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | – 2012-08-02 03:12:49

回答

1

除驗證外,form.clean_data()還會對Python數據類型執行一些隱式轉換。您可以簡單地通過將返回的值與str()unicode()內置包裝進行顯式轉換。之後,使用strip("(''),")格式化字符串。

+1

試過str(form.cleaned_data ['first_name'])並沒有什麼,你只是消失,但括號仍然存在 – 2012-08-02 03:11:01

+0

我忘了提及,你將需要去除結果字符串元組人工製品。我不小心忽略了這個小細節;我會改變我的答案來反映這一點。 – 2012-08-02 03:23:38

+0

謝謝你的回答,我以前從來沒有必要這樣做,以便將表單數據保存到數據庫中,爲什麼現在將它轉換成元組?爲什麼現在要將它轉換爲元組?我還檢查了cleared_data字典,字符串是u'string'unicode字符串 – 2012-08-02 03:31:45