2013-02-21 3 views
3

Я получаю следующую ошибку на страницах администратора при попытке просмотреть список существующих объектов.UnicodeEncodeError at/admin/in Django app

UnicodeEncodeError at /admin/character/charlevel/ 

'ascii' codec can't encode character u'\xd6' in position 0: ordinal not in range(128) 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/admin/character/charlevel/ 
Django Version:  1.4.1 
Exception Type:  UnicodeEncodeError 
Exception Value:  

'ascii' codec can't encode character u'\xd6' in position 0: ordinal not in range(128) 

Exception Location:  /home/***/workspace/***/***/character/models.py in __unicode__, line 413 
Python Executable: /usr/bin/python 
Python Version:  2.7.3 

Это происходит, когда я открываю список объектов этого класса:

class CharLevel(models.Model): 
    char = models.ForeignKey(Character) 
    prof = models.ForeignKey(Profession) 
    level = models.SmallIntegerField() 

    def __unicode__(self): 
     return ('{c}/{l}/{p}'.format(c=self.char.name, l=self.level, p=self.prof)).encode('utf-8') 

Проблема исчезает, если я удалить {c} компонент формата строки

Однако эта проблема не возникает класса Charater со следующими __unicode__:

class Character(models.Model): 
    name = models.CharField(max_length=32) 
    def __unicode__(self): 
     return self.name 

Что я сделал не так?

ответ

12

__unicode__ должен вернуть unicode:

def __unicode__(self): 
    return u'{c}/{l}/{p}'.format(c=self.char.name, l=self.level, p=self.prof) 
+0

THx человека. исправлена ​​проблема. ты спас мой день. подтвердите ответ как можно скорее – H4kor

+0

Удивительный! Работает как шарм! – Raptor