9

私のすべての django-models にはunicode関数があります。現時点では、これらは次のように記述される傾向があります。

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

ただし、 http: //python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#string-formatting の Code Like a Pythonista では、これは辞書であると指摘されてself.__dict__いるため、上記は次のように簡略化できます。 :

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

これは、「base.name」を除いて機能します。これは、pythonself.__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 に答える