Reputation: 122450
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
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
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