Nick Heiner
Nick Heiner

Reputation: 122450

Django: String representation of models

I would like my models to have two string representations: one that is displayed in the backend logs for debugging purposes, and a cleaner one that is displayed to end users when the model is represented in the HTML. Right now, I'm just overriding __unicode__(). Is there a way to do this?

Upvotes: 11

Views: 15645

Answers (2)

S.Lott
S.Lott

Reputation: 391852

Use properties

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 ) )

Now you can log someObject.details

Upvotes: 8

Ski
Ski

Reputation: 14487

You can also try __repr__ and __str__ for your logging/debugging purposes. It is possible (at least it should be this way) that your logger/debugger uses repr( object ) to log your objects.

Upvotes: 24

Related Questions