Alle meine django-Modelle haben Unicode Funktionen, zur Zeit neigen diese wie folgt geschrieben werden:Django: Mehr pythonic __unicode__
def __unicode__(self):
return u'Unit: %s -- %s * %f' % (self.name, self.base.name, self.mul)
jedoch Code wie ein Pythonista, bei http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#string-formatting weist darauf hin, dass self.__dict__
ist ein Wörterbuch, und als solche die oben vereinfacht werden kann:
def __unicode__(self):
return u'Unit: %(name)s -- %(base.name)s * %(mul)f' % self.__dict__
Dies funktioniert, mit Ausnahme der „base.name“, weil python zu sehen self.__dict__['base.name']
versucht, die zwar self.b versagt ase.name funktioniert.
Gibt es eine elegante Möglichkeit, dies zu erreichen, selbst wenn Sie den Fremdschlüsselbeziehungen folgen müssen?
Excellent! Warum diese zwei Methoden der String-Formatierung? Gibt es Situationen, in denen .format() nicht verwendet werden sollte, oder sollte ich nur ändern, um dies immer aus Konsistenzgründen zu verwenden? – Agrajag
@Agrajag 'format' wurde in 2.6 hinzugefügt, der einzige Grund,'% 'Formatierung zu verwenden, ist, wenn Sie Code für alte Systeme schreiben oder wenn Sie Ihren Code wie C aussehen lassen wollen. – ecatmur