__unicode__() works, unicode() blows up. (Never mind!)
Roy Smith
roy at panix.com
Sun Nov 4 08:41:08 EST 2012
In article <roy-90D9A2.08321804112012 at news.panix.com>,
Roy Smith <roy at panix.com> wrote:
> >>> print u.__unicode__()
> None
>
> >>> print unicode(u)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: coercing to Unicode: need string or buffer, NoneType found
>
> What's going on here? I thought
> (http://docs.python.org/2/library/functions.html#unicode) the latter two
> calls should be identical, but obviously they're not.
Why is it, that no matter how long you stare at a problem, the answer
comes to you moments after you hit the Post button? :-)
The problem is that __unicode__() is supposed to return a Unicode
object, and unicode() enforces that. The fix is to change:
def __unicode__(self):
return self.username
to be:
def __unicode__(self):
return unicode(self.username)
This never got noticed before because normally, self.username already is
a unicode string, so it just works.
More information about the Python-list
mailing list