django unicode error on admin page

(I'd add this as a comment to Andre's but don't have the 50 points yet)

This:

def __unicode__(self):
    return 'Proposal for: %s' % self.project.name

Should be

def __unicode__(self):
    return u'Proposal for: %s' % self.project.name

This is especially true if you are using a variable in the definition that references another model that may return a string with characters unicode doesn't like. Putting in the "u" in front of the text returned makes sure everything is kosher and returned as unicode.


There's a character somewhere, probably in self.project.name. You could probably find it if you check the whole error message.

However, if you're getting unicode results from your database it would probably be smarter to do something like this:

def __str__(self):
    return ('Proposal for: %s' % self.project.name).encode('ascii', errors='replace')

The smartest thing to do, since it's recommended by the Django documentation, is to implement the __unicode__ function instead:

def __unicode__(self):
    return u'Proposal for: %s' % self.project.name

2019 is RIGHT SINGLE QUOTATION MARK, commonly used as a curly apostrophe.

The problem probably is caused by you using __str__ instead of __unicode__, and Django's documentation recommends that you only use __unicode__.

The list of instances probably shows up fine because it doesn't include the field that contains the apostrophe.