Django:更多pythonic __unicode__

时间:2012-11-09 09:34:20

标签: python django foreign-keys string-formatting

我所有的django模型都有 unicode 功能,目前这些功能往往是这样写的:

def __unicode__(self):
    return u'Unit: %s  -- %s * %f' % (self.name, self.base.name, self.mul)

然而,代码像Pythonista一样,http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#string-formatting指出self.__dict__是一本字典,因此上面的内容可以简化为:

def __unicode__(self):
    return u'Unit: %(name)s -- %(base.name)s * %(mul)f' % self.__dict__

除了“base.name”之外,这是有效的,因为python尝试查找失败的self.__dict__['base.name'],而self.base.name可以工作。

即使您需要遵循外键关系,是否有一种优雅的方式来完成这项工作?

1 个答案:

答案 0 :(得分:8)

%字符串格式不支持属性访问,但是format(自2.6起):

def __unicode__(self):
    return u'Unit: {name:s} -- {base.name:s} * {mul:f}'.format(**self.__dict__)