2014-02-05 44 views
1

Django的,爲什麼定義某些類型的對象(模型等)的__unicode__方法導致print(obj)打印的__unicode__輸出,但如果我創建我自己的類,並定義__unicode__,它似乎並沒有被調用?我讀過有關__repr__,但它似乎是在Django所有的重點是__unicode____unicode__不叫上在Django/Python項目某些對象

什麼是兩者之間的關係,是什麼讓我的對象的良好字符串表示我日誌中的最佳做法?

回答

4

Django的Model類defines __str__ for you像這樣的東西:

def __str__(self): 
    return unicode(self).encode('utf-8') 

因此,當您print(obj)(和objModel),Python會自動調用obj.__str__()這就要求unicode(obj)這就要求obj.__unicode__()

如果你創建自己的類,並添加__str__定義像上面的,那麼你可以使用__unicode__來回報您的對象的Unicode表示,並有一個功能也控制對象的str表示。

+0

內的Django良好的漁獲:) – tayfun

相關問題