2011-02-03 40 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