django: gettext и принуждение к unicode

У меня есть код в моем приложении django.

class Status(object): def __init__(self, id, desc): self.id = id self.desc = desc def __unicode__(self): return self.desc STATUS = Status(0, _(u"Some text")) 

Когда я пытаюсь отобразить некоторый статус (или даже принуждать его к unicode), я получаю:

 TypeError: coercing to Unicode: need string or buffer, __proxy__ found 

Может ли кто-нибудь объяснить мне, что я делаю неправильно?

  • Преобразование данных Unicode в int в python
  • Как я могу использовать io.StringIO () с модулем csv?
  • Popen.communicate () выбрасывает UnicodeDecodeError
  • Имена файлов Unicode в Windows с Python & subprocess.Popen ()
  • Где находится «лучшая ASCII Python для этой Unicode»?
  • не удается открыть URL-адрес юникода с помощью python
  • Печать Python не использует __repr__, __unicode__ или __str__ для юникодного подкласса?
  • Ошибка декодирования Unicode Python при импорте matplotlib
  • One Solution collect form web for “django: gettext и принуждение к unicode”

    Функция _() из Django может возвращать объект django.utils.functional.__proxy__ , который сам по себе не является unicode (см. http://docs.djangoproject.com/en/1.1/ref/unicode/#translated-strings ). Python не рекурсивно вызывает unicode() , поэтому для объекта Status объект будет возвращать объект __proxy__ напрямую. Вам нужно заставить метод __unicode__ return unicode(self.desc) .

    Обратите внимание, что это специфично для Django; Собственный gettext Python не возвращает эти прокси-объекты.

    Python - лучший язык программирования в мире.