2015-04-03 49 views
0

在我的模型我有一個字段定義如下:編碼在Django管理

名= models.CharField(MAX_LENGTH = 50)

然後在管理面板,如果我嘗試插入一條記錄的名稱包含字符'č','š','ž',我得到UnicodeEncodeError。

'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128) 

這是什麼?爲什麼django不使用utf-8的一切?

回答

1

Django使用utf-8的一切。我想這個錯誤可能在你模型的__unicode__()方法中。

對於所有文本數據,您應始終使用u'前綴。所以,如果你寫的是這樣的:

def __unicode__(self): 
    return 'Model: %s' % self.name 

,那麼你需要將其更改爲:

def __unicode__(self): 
    return u'Model: %s' % self.name 
+1

順便說一句,我的問題是,我是定義__str__方法不__unicode__ – user568021 2015-04-08 11:09:32

+0

由於Django的1.9的,有一個處理這個問題的'python_2_unicode_compatible'包裝器。請參閱[__str __()位](https://docs.djangoproject.com/en/1.9/intro/tutorial02/)。 – Jheasly 2016-02-13 00:09:29