In article <roy-90d9a2.08321804112...@news.panix.com>, Roy Smith <r...@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. -- http://mail.python.org/mailman/listinfo/python-list