9

我所有的 django-models 都有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 有效。

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

4

1 回答 1

8

%字符串格式不支持属性访问,但format(从 2.6 开始)支持:

def __unicode__(self):
    return u'Unit: {name:s} -- {base.name:s} * {mul:f}'.format(**self.__dict__)
于 2012-11-09T09:47:56.753 回答