Django: строковое представление моделей - PullRequest
9 голосов
/ 04 февраля 2011

Мне бы хотелось, чтобы в моих моделях было два строковых представления: одно, которое отображается в журналах внутреннего интерфейса для целей отладки, и более чистое, которое отображается для конечных пользователей, когда модель представлена ​​в HTML.Прямо сейчас я просто переопределяю __unicode__().Есть ли способ сделать это?

Ответы [ 2 ]

18 голосов
/ 04 февраля 2011

Вы также можете попробовать __repr__ и __str__ для ведения журнала / отладки.Возможно (по крайней мере, так должно быть), что ваш логгер / отладчик использует repr( object ) для регистрации ваших объектов.

7 голосов
/ 04 февраля 2011

Использовать свойства

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...