7

私の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"))

何らかのステータスを表示しようとすると (またはユニコードに強制することさえ)、次のようになります。

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

私が間違っていることを誰かに説明してもらえますか?

4

2 に答える 2

22

Djangoの関数は、それ自体が Unicode ではないオブジェクト_()を返すことができます ( http://docs.djangoproject.com/en/1.1/ref/unicode/#translated-stringsを参照)。Python は再帰的に呼び出さないため、Status オブジェクトがオブジェクトを直接返すのはエラーです。メソッドを作成する必要があります。django.utils.functional.__proxy__unicode()__proxy____unicode__return unicode(self.desc)

これは Django に固有のものであることに注意してください。Python 自体gettextは、これらのプロキシ オブジェクトを返しません。

于 2010-01-25T16:20:00.287 に答える