2013-09-24 101 views
0

我開始學習Django,並開始使用Django書籍。 我碰到這個概念,我有一個很難理解的邏輯..在Django中,爲什麼我需要__unicode__?

書中說 「Django使用整個框架Unicode對象。模型對象作爲Unicode對象檢索,視圖與Unicode數據和模板的互動都是以Unicode編碼的,一般來說,你不必擔心確保你的編碼是正確的,事情應該是正常的。「

那麼爲什麼你需要做「def unicode()」以unicode打印?它不應該只用普通香草印刷品()嗎?

+0

它的工作沒有它,方法就是告訴它什麼* *打印。 –

+0

僅供參考:在Python 3中,您需要'__str__'來代替。 – meshy

回答

4

您是否試過打印沒有__unicode__方法的模型實例?你沒有得到任何真正有用的東西。這就是__unicode__進場的地方。您可以定義每當您嘗試在unicode上下文中使用它們時,模型實例的顯示方式。

試試這個實驗。創建一個簡單的模型。現在打印出來:

class MyModel(models.Model): 
    name = models.CharField(max_length=20) 

>>> obj = MyModel("foo") 
>>> print obj 

看看你會得到什麼。現在添加一個__unicode__()方法。

class MyModel(models.Model): 
    name = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.name 

運行一遍:

>>> obj = MyModel("foo") 
>>> print obj