2011-02-03 64 views
8

我希望我的模型具有兩個字符串表示形式:一個顯示在後端日誌中用於調試目的,另一個清晰的表示形式在HTML中表示時顯示給最終用戶。現在,我只是重寫__unicode__()。有沒有辦法做到這一點?Django:模型的字符串表示

回答

16

您也可以嘗試__repr____str__用於記錄/調試目的。這是可能的(至少它應該是這樣),你的記錄器/調試器使用repr(object)來記錄你的對象。

+1

事實上,`__repr__`用於調試/內部表示,要麼`__unicode__`或`__str__`用於一般用途。這應該有更多upvotes。 – 2014-10-09 10:55:13

7

使用性能

class SomeThing(models.Model): 
    foo= 
    bar= 
    baz= 
    def __unicode__(self): 
     return "{0} {1}".format(self.foo, self.bar) 
    @property 
    def details(self): 
     return repr(dict(foo=self.foo, bar=self.bar, baz=self.baz)) 

現在,您可以登錄someObject.details

+0

那`__repr__`屬性呢?可以以某種方式使用它嗎?因此`__unicode__`可以很好地顯示例如管理員,`細節`很好轉儲對象到日誌? – Tjorriemorrie 2014-08-05 14:42:47