2011-04-12 70 views
1

有人可以給我一個提示,爲什麼模型實例的名稱中的元音變爲垃圾一次,但打印正確時unicode()是'print( )「編?Django外殼:模型到字符串與Unicode的失敗/失敗不

class Geo(Position): 
    name = models.CharField(max_length = 161) 

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

在外殼:

In [10]: Geo.objects.get(pk=1) 
Out[10]: <Geo: Eichstätt> 
In [11]: print Geo.objects.get(pk=1).__unicode__() 
Eichstätt 

回答

1

下劃線如果從年底離開關__unicode__()你的打印聲明,你會發現它仍然正常工作。這是因爲當您打印時,該方法會自動調用。

當您在解釋器中鍵入對象的名稱時,調用的方法是__repr__

請注意,Django的模型實例在內部都使用unicode,所以實際上您的__unicode__方法可能只是return self.name

+1

嗯,當我離開它,像你建議我得到一個 「‘ASCII’編解碼器不能編碼字符U‘\ XF6’在位置1: 序不在範圍內(128)」 我複製來自關於__unicode__的文檔的u'%s'。所以,我認爲這是'官方'的方式來做到這一點:) – user2343 2011-04-12 14:54:43