Оболочка Django: модель-строка с Unicode не работает / не - PullRequest
1 голос
/ 12 апреля 2011

Может ли кто-нибудь дать мне подсказку, почему умлаут в имени экземпляра модели один раз превращается в мусор, но печатается правильно, когда Юникод () равен 'print ()' ed?

class Geo(Position):
    name = models.CharField(max_length = 161)

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

В оболочке:

In [10]: Geo.objects.get(pk=1)
Out[10]: <Geo: Eichstätt>
In [11]: print Geo.objects.get(pk=1).__unicode__()
Eichstätt

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Если вы пропустите __unicode__() в конце вашего оператора печати, вы обнаружите, что он по-прежнему работает правильно. Это потому, что этот метод автоматически вызывается при вызове print.

Когда вы просто вводите имя объекта в интерпретаторе, вызывается метод __repr__.

Обратите внимание, что все экземпляры модели Django используют Юникод для внутреннего использования, поэтому на самом деле ваш __unicode__ метод может быть просто return self.name.

1 голос
/ 12 апреля 2011

Geo. repr () вызывается при печати, но не unicode РЕДАКТИРОВАТЬ: http://docs.python.org/library/functions.html#repr Также я не уверен, почему парсер получил подчеркивания в именах методов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...